《Linux C编程.ppt》由会员分享,可在线阅读,更多相关《Linux C编程.ppt(18页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、Linux下C编程 C语言简介n n在80年代末期美国国家标准协会(American National Standards Institute)发布了一个被称为ANSI C的C语言标准。这更加保证了将来在不同平台上的C的一致性。n nLinux上可用的C编译器是GNU C编译器,它建立在自由软件基金会的编程许可证的基础上,因此可以自由发布。你能在Linux的发行光盘上找到它 GNU C 编 译 器 一、基本用法一、基本用法 gccgcc options filenames options filenames说明:说明:n n在在gccgcc后面可以有多个编译选项,同时进行多个编后面可以有多个编
2、译选项,同时进行多个编译操作。很多的译操作。很多的gccgcc选项包括一个以上的字符。因选项包括一个以上的字符。因此你必须为每个选项指定各自的连字符。例如,此你必须为每个选项指定各自的连字符。例如,下面的两个命令是不同的:下面的两个命令是不同的:gccgcc-p-g test1.c-p-g test1.c gccgcc -pg test1.c -pg n当你不用任何选项编译一个程序时,当你不用任何选项编译一个程序时,GCCGCC将会建将会建立立(假定编译成功假定编译成功)一个名为一个名为a.outa.out的可执行文件。的可执行文件。基本编译选项n n-o-o选项选项 你能用你能用 -o-o
3、编译选项来为将产生的可执行文件指编译选项来为将产生的可执行文件指定一个文件名来代替定一个文件名来代替 a.outa.out。例:例:gccgcc o count count.c o count n-c-c选项:告诉选项:告诉GCCGCC仅把源代码编译为目标代码而仅把源代码编译为目标代码而跳过汇编和连接的步骤。这个选项使用的非常频跳过汇编和连接的步骤。这个选项使用的非常频繁,因为它使得编译多个繁,因为它使得编译多个C C程序时速度更快并且程序时速度更快并且更易于管理。缺省时更易于管理。缺省时GCCGCC建立的目标代码文件有建立的目标代码文件有一个一个.o.o的扩展名。的扩展名。例:例:gccgc
4、c c test2.c c test2.c 警告选项 在gcc中用开关-Wall控制警告信息,使用示例命令如下:gcc Wall-o test3_1 test3_1.c查找选项 gccgcc一般使用默认路径查找头文件和库文件。如果一般使用默认路径查找头文件和库文件。如果文件所用的头文件或库文件不在缺省目录下,则文件所用的头文件或库文件不在缺省目录下,则编译时要指定它们的查找路径。编译时要指定它们的查找路径。n n-I-I选项:指定头文件的搜索目录选项:指定头文件的搜索目录例:例:gccgcc I/export/home/I/export/home/stst o test1 test1.co t
5、est1 n-L-L选项:指定库文件的搜索目录选项:指定库文件的搜索目录例:例:gccgcc L/usr/X11/R6/lib L/usr/X11/R6/lib o test1 test1.co test1 test1.c多个源文件生成一个可执行文件 问题:有多个源文件时,如何生成一个可执行文件问题:有多个源文件时,如何生成一个可执行文件?n n方法方法1 1:gccgcc Wall o Wall o mytestmytest test1.c test1.c test2.c test3.ctest2.c n方法方法2 2:gccgcc-Wall-c test1.c-Wall-c test1.c
6、gccgcc-Wall c test2.c-Wall c test2.cgccgcc-Wall c test3.c-Wall c test3.c gccgcc o o mytestmytest test1.o test2.o test3.o test1.o test2.o test3.o优化选项 优化选项可以使优化选项可以使GCCGCC在耗费更多编译时间和牺牲在耗费更多编译时间和牺牲易调试性的基础上产生更小更快的可执行文件。易调试性的基础上产生更小更快的可执行文件。这些选项中最典型的是这些选项中最典型的是-O-O和和-O2-O2选项。选项。n n-O-O选项:告诉选项:告诉GCCGCC对源代码
7、进行基本优化。这些对源代码进行基本优化。这些优化在大多数情况下都会使程序执行的更快。优化在大多数情况下都会使程序执行的更快。n n-O2-O2选项:告诉选项:告诉GCC GCC 产生尽可能小和尽可能快的产生尽可能小和尽可能快的代码。代码。-O2-O2选项将使编译的速度比使用选项将使编译的速度比使用-O-O时慢。时慢。但通常产生的代码执行速度会更快。但通常产生的代码执行速度会更快。版本选项n n-v-v选项选项 用户将会得到自己目前正在使用的用户将会得到自己目前正在使用的gccgcc的版本及与版本相关的版本及与版本相关的一些信息。的一些信息。gccgcc -v -v 将得到如下结果:将得到如下结
8、果:Reading specs from/usr/lib/gcc-lib/i486-box-Reading specs from/usr/lib/gcc-lib/i486-box-linux/2.7.2/specslinux/2.7.2/specs gccgcc version 2.7.2 version 2.7.2n n-V-V 选项选项 如果安装了多个版本的如果安装了多个版本的gccgcc,并且想强制执行其中的某个并且想强制执行其中的某个版本,可以用命令通知系统用户要使用的版本。版本,可以用命令通知系统用户要使用的版本。gccgcc-V2.6.3 -v-V2.6.3 -v调试和剖析选项 使
9、用调试选项后,使用调试选项后,gccgcc在进行编译的时候,在目标文在进行编译的时候,在目标文件(件(.o.o)和创建的可执行文件中插入额外信息,这些和创建的可执行文件中插入额外信息,这些额外信息使额外信息使gdbgdb能够判断编译过的代码和源代码之间能够判断编译过的代码和源代码之间的关系。的关系。n n-g-g选项:告诉选项:告诉GCCGCC产生能被产生能被 GNU GNU 调试器使用的调试调试器使用的调试信息以便调试你的程序。信息以便调试你的程序。例:例:gccgcc g o test3 test3.c g o test3 n-pg-pg选项:告诉选项:告诉GCCGCC在你的程序里加入额外
10、的代码,在你的程序里加入额外的代码,执行时,产生执行时,产生gprofgprof用的剖析信息以显示你的程序的用的剖析信息以显示你的程序的耗时情况。耗时情况。n n使用使用gdbgdb调试工具,命令行如下:调试工具,命令行如下:例:例:gccgcc ggdb3 o test3 test3.c ggdb3 o test3 test3.c 用gdb调试GCC程序 gdb是一个用来调试C和C+程序的常用调试工具之一。gdb所提供的一些功能:n n监视程序中变量的值。n n设置断点以使程序在指定的代码行上停止执行。n n逐行执行代码。n n分析崩溃程序的产生的core文件gdb基本用法 需要调试的程序,
11、在编译时要使用调试选项。在默认的情况下,调试符号不会编译到程序中。调试之后,不需要重新编译程序。gdb filename出现(gdb)在这里,可以输入调试命令基本gdb命令n nfilefile装入想要调试的可执行文件。装入想要调试的可执行文件。n nkillkill终止正在调试的程序。终止正在调试的程序。n nlistlist执行一行源代码但不进入函数内部。执行一行源代码但不进入函数内部。n nnextnext执行一行源代码但不进入函数内部。执行一行源代码但不进入函数内部。n nstepstep执行一行源代码而且进入函数内部。执行一行源代码而且进入函数内部。n nrunrun执行当前被调试的
12、程序执行当前被调试的程序n nquitquit终止终止 gdbgdbn nwatchwatch使你能监视一个变量的值而不管它何时被改变。使你能监视一个变量的值而不管它何时被改变。n nbreakbreak在代码里设置断点在代码里设置断点,这将使程序执行到这里时被挂这将使程序执行到这里时被挂起。起。n nmakemake使你能不退出使你能不退出 gdbgdb 就可以重新产生可执行文件。就可以重新产生可执行文件。n nshellshell使你能不离开使你能不离开 gdbgdb 就执行就执行 UNIX shell UNIX shell 命令。命令。实例n n程序test3_1a.c(简单程序样例)n
13、 n程序test3_2.c test3_2a.c(程序优化样例,用命令time./test3_2查看效果)n n程序test3_3.c(错误程序的例子,用gdb查错)程序自动维护工具make问题:当开发的程序非常庞大,且关系复杂,手工编译链接非常困难解决:利用一个自动系统控制和协调整个程序的创建过程。在这个自动系统中,程序员可以定义创建规则并通过这个规则进行项目的开发。makefile就是定义这种规则的文件。GNU make 解释执行makefile。make是一种自动生成和维护目标程序的工具。n n可以调用编译器、连接器等n n根据程序各部分的修改情况,重新编译链接目标代码n n输入make
14、命令后,系统自动检测系统文件和以定义的规则,完成整个创建过程 程序自动维护工具make简单简单makefilemakefile文件的写法文件的写法由若干规则组成,每个规则说明一个目标由若干规则组成,每个规则说明一个目标规则的格式:规则的格式:目标目标目标目标 属性属性属性属性分隔符分隔符分隔符分隔符 依赖文件依赖文件依赖文件依赖文件;命令菜单命令菜单命令菜单命令菜单 命令菜单命令菜单命令菜单命令菜单 说明:说明:表示可选,表示可选,表示可以多次出现表示可以多次出现 涉及的文件名允许用通配符涉及的文件名允许用通配符 例子:例子:c c程序程序test5_1.txttest5_1.txt和它的和它的makefilemakefile程序自动维护工具makemake 命令的使用 make option macrodef targetn nmake命令默认的文件是makefile(Makefile),也可以用“-f 文件名”指定要解释执行的文件。n nmake默认从文件指定的第一条规则开始执行,并根据第一条中的依赖文件顺次执行。也可以通过target直接指定执行的目标。