欢迎来到天天文库
浏览记录
ID:8807903
大小:18.50 KB
页数:3页
时间:2018-04-08
《arm-linux-gcc常用参数讲解gcc编译器使用方法》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、我们需要编译出运行在ARM平台上的代码,所使用的交叉编译器为arm-linux-gcc。下面将arm-linux-gcc编译工具的一些常用命令参数介绍给大家。在此之前首先介绍下编译器的工作过程,在使用GCC编译程序时,编译过程分为四个阶段:1.预处理(Pre-Processing)2.编译(Compiling)3.汇编(Assembling)4.链接(Linking)Linux程序员可以根据自己的需要让GCC在编译的任何阶段结束,以便检查或使用编译器在该阶段的输出信息,或者对最后生成的二进制文件进行控制,以便通过加入不同数量和种类的调试代码来为今后的调试做好准备。和其它常
2、用的编译器一样,GCC也提供了灵活而强大的代码优化功能,利用它可以生成执行效率更高的代码。以文件example.c为例说明它的用法0.arm-linux-gcc-oexampleexample.c不加-c、-S、-E参数,编译器将执行预处理、编译、汇编、连接操作直接生成可执行代码。-o参数用于指定输出的文件,输出文件名为example,如果不指定输出文件,则默认输出a.out1.arm-linux-gcc-c-oexample.oexample.c-c参数将对源程序example.c进行预处理、编译、汇编操作,生成example.0文件去掉指定输出选项"-oexample
3、.o"自动输出为example.o,所以说在这里-o加不加都可以2.arm-linux-gcc-S-oexample.sexample.c-S参数将对源程序example.c进行预处理、编译,生成example.s文件-o选项同上3.arm-linux-gcc-E-oexample.iexample.c-E参数将对源程序example.c进行预处理,生成example.i文件(不同版本不一样,有的将预处理后的内容打印到屏幕上)就是将#include,#define等进行文件插入及宏扩展等操作。4.arm-linux-gcc-v-oexampleexample.c加上-v参
4、数,显示编译时的详细信息,编译器的版本,编译过程等。5.arm-linux-gcc-g-oexampleexample.c-g选项,加入GDB能够使用的调试信息,使用GDB调试时比较方便。6.arm-linux-gcc-Wall-oexampleexample.c-Wall选项打开了所有需要注意的警告信息,像在声明之前就使用的函数,声明后却没有使用的变量等。7.arm-linux-gcc-Ox-oexampleexample.c-Ox使用优化选项,X的值为空、0、1、2、30为不优化,优化的目的是减少代码空间和提高执行效率等,但相应的编译过程时间将较长并占用较大的内存空间
5、。8.arm-linux-gcc-I/home/include-oexampleexample.c-Idirname:将dirname所指出的目录加入到程序头文件目录列表中。如果在预设系统及当前目录中没有找到需要的文件,就到指定的dirname目录中去寻找。9.arm-linux-gcc-L/home/lib-oexampleexample.c-Ldirname:将dirname所指出的目录加入到库文件的目录列表中。在默认状态下,连接程序ld在系统的预设路径中(如/usr/lib)寻找所需要的库文件,这个选项告诉连接程序,首先到-L指定的目录中去寻找,然后再到系统预设路径
6、中寻找。10.arm-linux-gcc–static-olibexample.aexample.c静态链接库文件gcc在命令行上经常使用的几个选项是:-c只预处理、编译和汇编源程序,不进行连接。编译器对每一个源程序产生一个目标文件。-ofile确定输出文件为file。如果没有用-o选项,缺省的可执行文件的输出是a.out,目标文件和汇编文件的输出对source.suffix分别是source.o和source.s,预处理的C源程序的输出是标准输出stdout。-Dmacro或-Dmacro=defn其作用类似于源程序里的#define。例如:%gcc-c-DHAVE_G
7、DBM-DHELP_FILE="help"cdict.c其中第一个-D选项定义宏HAVE_GDBM,在程序里可以用#ifdef去检查它是否被设置。第二个-D选项将宏HELP_FILE定义为字符串“help”(由于反斜线的作用,引号实际上已成为该宏定义的一部分),这对于控制程序打开哪个文件是很有用的。-Umacro某些宏是被编译程序自动定义的。这些宏通常可以指定在其中进行编译的计算机系统类型的符号,用户可以在编译某程序时加上-v选项以查看gcc缺省定义了哪些宏。如果用户想取消其中某个宏定义,用-Umacro选项,这相当于把#
此文档下载收益归作者所有