gcc的使用.doc
文本预览下载声明
Gcc的使用
Gcc编译器可以支持C、C++、object C、JAVA等诸多语言,经过合适的配置可以生产交叉开发工具,gcc工具在/opt/EmbedSky/4.3.3的目录下,主要包括如下工具:
cpp:GNU C预处理器,是一个宏指令处理器,GNU C编译器在编译前自动使用
gcc:C编译器
g++:C++编译器
gcj:gcc的java前端,可以生产执行速度更快的二进制本地执行代码,而不是java byte code
binutils是一组二进制工具集,包括as、ld、addr2line、ar、gprof、mn、objcopy、objdump、ranlib、size、strings、strip等
as:GNU汇编器工具,用于把汇编语言代码转换成二进制代码,并存放在object文件中
ld:GNU链接器工具,用于确定相对地址,把多个object文件、起始代码段、库等链接起来,最终成为一个可执行文件
addr2line:把执行中得地址映射到源文件的对应行
ar:创建归档文件,修改/替换库中得object文件,向库中添加/提取object文件
objdump:复制和转换object文件
strip:去掉执行文件中得多余信息(如调试信息),可减小执行文件的大小
gcc支持的输入文件的格式:
1:c语言源文件,后缀为.c
2:静态链接库,后缀为.a
3:c++源文件,后缀为.C、.cc
4:程序包含的头文件,后缀为.h
5:经预处理的c源文件,后缀为.i
6:经预处理过的c++源文件,后缀为.ii
7:object-c源文件,后缀为.m
8:编译后的目标文件,后缀为.o
9:汇编源文件,后缀为.s
10:经预编译的汇编源文件,后缀为.S
11:动态链接库(程序运行时用),后缀为.so
gcc命令的的基本格式:
#gcc [命令行选项] 待生成的文件名 需编译的文件名(可多个源文件)
命令参数:
1:-o filename :指定输出文件名,将经过gcc处理过的结果存为文件“filename”,这个文件可以是预处理文件、汇编文件、目标文件或最终可执行文件。如果“FILE”没有指定,那么生产的可执行默认文件名为a.out,目标文件默认为source.o,汇编文件默认为source.s,生产的预处理文件发送到标准输出设备
2:-E:该选项表示只运行预处理编译器进行预处理就停止,而不做编译、汇编和链接
3:-c:该选项表示只要求编译器进行编译,而不进行链接,生成以源文件的文件名命名但把其后缀由.c或.cc变成.o的目标文件
4:-D name[=definition]:将名为name的宏定义的字符串definition,如果括号中的部分默认则宏定义为字符串1
5:LDIRNAME:将DIRNAME加入库文件的搜索目录列表中
6:-static:静态链接库,即执行静态链接,不支持动态共享库,默认情况下gcc只连接共享库
7:IFOO:链接名为libFOO的函数库
8:-g(gdb):在可执行程序中包含标准调试信息,方便程序调试,如果使用括号中的选项,表示加入gdb扩展的调试信息,以便使用gdb来进行调试
9:-O[0、1、2、3]:优化编译过的代码,括号中的部分为优先级别,默认情况下为2级别优化,0为不优化,注意高级的优化不一定得到效率更高的代码
10:-ansi:支持ANSI/ISO C的标准语法,取消GNU的语法扩展中与标准有冲突的部分,如:asm或typeof关键字,注意,这一项并不能保证生成ANSI兼容代码
11:-pedantic:运行发出ANSI/ISO C标准所列出的所有警告
12:-pedantic[-errors]:运行发出ANSI/ISO C标准所列出的所有错误,括号中的选项表示支持KernighanRitchie C语法
13:-w:禁止所有警告
14:-Wall:运行发出gcc能提供的所有有用的警告,也可以用-W{warning}来标记指定的警告
15:-werror:把所有的警告转换为错误
16:-MM:输出一个Make兼容的相关列表(可以简化我们编写makefile)
17:-v:显示在编译过程的每一步中用到的命令
18:-Idir:将dir目录加到搜寻头文件的列表中去,并优先于gcc默认的搜寻目录,在多个-I选项的情况下,按命令行上-I选项的前后顺序搜索,dir可使用相当路径
19:-Ldir:将dir目录加到搜寻-L选项指定的函数库文件的目录列表中去,并优先于gcc默认的搜寻目录,在多个-L选项的情况下,按命令行上-L选项的前后顺序搜索,dir可使用相当路径
例如:最简单的命令格式:#gcc
显示全部