文档介绍:Linux 系统应用与程序设计
主讲:邝颖杰
电邮:kuangyingjie@
主要内容
gcc简介
功能
命令
编译c程序
利用make工具简化编译过程
make简介
Makefile基本格式
调试
静态调试
动态调试
gdb调试工具的使用
gcc简介
名称:
GNU project C and C++ Compiler
piler Collection
管理与维护
GNU项目
对C/C++编译的控制
预处理(Preprocessing)
pilation)
汇编(Assembly)
链接(Linking )
gcc的使用
基本使用格式
$ gcc [ 选项] <文件名>
常用选项及含义
gcc常用选项
选项
含义
-o file
处理过的结果存为文件file,这个结果文件可能是预处理文件、汇编文件、目标文件或者最终的可执行文件。,如果这个选项被省略了,;;;生成的预处理文件则发送到标准输出设备。
gcc的常用选项
gcc常用选项
选项
含义
-c
仅对源文件进行编译,不链接生成可执行文件。在对源文件进行查错时,或只需产生目标文件时可以使用该选项。
-g[gdb]
在可执行文件中加入调试信息,方便进行程序的调试。如果使用中括号中的选项,表示加入gdb扩展的调试信息,方便使用gdb来进行调试
-O[0、1、2、3]
对生成的代码使用优化,中括号中的部分为优化级别,缺省的情况为2级优化,0为不进行优化。注意,采用更高级的优化并不一定得到效率更高的代码。
-Dname[=definition]
将名为name的宏定义为definition,如果中括号中的部分缺省,则宏被定义为1
gcc的常用选项
gcc常用选项
选项
含义
-Idir
在编译源程序时增加一个搜索头文件的额外目录——dir,即include增加一个搜索的额外目录。
-Ldir
在编译源文件时增加一个搜索库文件的额外目录——dir
-llibrary
在编译链接文件时增加一个额外的库,
-w
禁止所有警告
-Wwarning
允许产生warning类型的警告,warning可以是:main、unused等很多取值,最常用是-Wall,表示产生所有警告。如果warning取值为error,其含义是将所有警告作为错误(error),即出现警告就停止编译。
gcc文件扩展名规范
gcc可以根据文件扩展名执行操作
gcc文件扩展名规范
扩展名
类型
可进行的操作方式
.c
c语言源程序
预处理、编译、汇编、链接
.C,.cc,.cp,.cpp,.c++,.cxx
c++语言源程序
预处理、编译、汇编、链接
.i
预处理后的c语言源程序
编译、汇编、链接
.ii
预处理后的c++语言源程序
编译、汇编、链接
.s
预处理后的汇编程序
汇编、链接
.S
未预处理的汇编程序
预处理、汇编、链接
.h
头文件
不进行任何操作
.o
目标文件
链接
编译代码
源代码
示例源程序——
#include <>
int main(void)
{
printf("hello gcc!\r\n");
return 0;
}
生成预处理文件
命令
$gcc –E –o
......
extern void funlockfile (FILE *__stream) ;
# 679 "/usr/include/" 3
# 2 "" 2
int main(void)
{
printf("hello gcc!\n");
return 0;
}
生成汇编文件
命令
$gcc –S –o
......
main:
pushl %ebp
movl %esp, %ebp
........
addl $16, %esp
movl $0, %eax
leave
ret
......"