文档介绍:1 2017 年3月9日 GCC 的使用与开发 2 2017 年3月9日主要内容? gcc 简介–功能–命令–安装?利用 gcc 编译 c程序?利用 make 工具简化编译过程– make 简介– Makefile 基本格式?调试–静态调试–动态调试? gdb 调试工具的使用 3 2017 年3月9日 gcc 简介?简介: – Linux 系统下的 gcc ( GNU piler )是 GNU 推出的功能强大、性能优越的多平台编译器,是 GNU 的代表作品之一。 gcc 是可以在多种硬体平台上编译出可执行程序的超级编译器,其执行效率与一般的编译器相比平均效率要高 20%~30% 。?安装首先查看 linux 系统是否安装了 gcc , #rpm – qa|grep gcc 如果没有安装,需要安装 gcc-- 5,--gcc-- ,gcc-g77--5 几个软件包。 4 2017 年3月9日对 C/C++ 编译的控制( GCC 的编译过程) –预处理( Preprocessing ) gcc 首先调用 cpp 进行预处理,在预处理过程中,对源代码文件中的文件包含(include) 、预编译语句(如宏定义 define 等)进行分析。–编译( Compilation ) Gcc 1 进行编译,这个阶段根据输入文件生成汇编语言。–汇编( Assembly ) Gcc 调用 as进行工作,一般来讲, .S为后缀的汇编语言源代码文件和汇编、.。–链接( Linking ) Gcc 调用 ld来完成连接工作,生成可执行文件。? 5 2017 年3月9日 gcc 的使用?基本使用格式–$ gcc [ 选项 ] < 文件名> ?常用选项及含义 gcc 常用选项选项-o file 含义将经过 gcc 处理过的结果存为文件 file ,这个结果文件可能是预处理文件、汇编文件、目标文件或者最终的可执行文件。假设被处理的源文件为 ,如果这个选项被省略了,那么生成的可执行文件默认名称为 ;目标文件默认名为 ;汇编文件默认名为 ;生成的预处理文件则发送到标准输出设备。 6 2017 年3月9日 gcc 的常用选项 gcc 常用选项选项-c -g[gdb] -O[0 、1、2、3] -D name[=definitio n] 含义仅对源文件进行编译,不链接生成可执行文件。在对源文件进行查错时,或只需产生目标文件时可以使用该选项。在可执行文件中加入调试信息,方便进行程序的调试。如果使用中括号中的选项,表示加入 gdb 扩展的调试信息,方便使用 gdb 来进行调试对生成的代码使用优化,中括号中的部分为优化级别,缺省的情况为 2级优化, 0为不进行优化。注意, 采用更高级的优化并不一定得到效率更高的代码。将名为 name 的宏定义为 definition ,如果中括号中的部分缺省,则宏被定义为 1 7 2017 年3月9日 gcc 的常用选项 gcc 常用选项选项-I dir -L dir -l library -w -W warning 含义在编译源程序时增加一个搜索头文件的额外目录—— dir ,即 include 增加一个搜索的额外目录。在编译源文件时增加一个搜索库文件的额外目录—— dir 在编译链接文件时增加一个额外的库,库名为 library .a禁止所有警告允许产生 warning 类型的警告, warning 可以是: main 、 unused 等很多取值,最常用是-Wall ,表示产生所有警告。如果 warning 取值为 error ,其含义是将所有警告作为错误( error ),即出现警告就停止编译。 8 2017 年3月9日 gcc 文件扩展名规范? gcc 可以根据文件扩展名执行操作 gcc , .cc, .cp , .cpp , .c++ , .cxx .i . 类型 c语言源程序 c++ 语言源程序预处理后的 c语言源程序预处理后的 c++ 语言源程序预处理后的汇编程序未预处理的汇编程序头文件目标文件可进行的操作方式预处理、编译、汇编、链接预处理、编译、汇编、链接编译、汇编、链接编译、汇编、链接汇编、链接预处理、汇编、链接不进行任何操作链接 9 2017 年3月9日使用 gcc 编译代码?源代码示例源程序—— #include <> int main(void) { printf("hello gcc!\r\n"); return 0;