gcc编译器使用简明指南.doc_第1页
gcc编译器使用简明指南.doc_第2页
gcc编译器使用简明指南.doc_第3页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

gcc编译器使用简明指南 gcc对文件的处理需要经过预处理-编译-汇编-链接的步骤,从而产生一个可执行文件,各部分对应不同的文件类型,具体如下:file.c c程序源文件file.i c程序预处理后文件file.cxx c+程序源文件,也可以是file.cc / file.cpp / file.c+file.iic+程序预处理后文件file.h c/c+头文件file.s 汇编程序文件file.o 目标代码文件gcc选项文件列表-ansi强制完全ANSI一致-c仅编译或汇编,生成目标代码文件,将.c、.i、.s等文件生成.o文件,其余文件被忽略-S仅编译,不进行汇编和链接,将.c、.i等文件生成.s文件,其余文件被忽略-E仅预处理,并发送预处理后的.i文件到标准输出,其余文件被忽略-ofile创建可执行文件并保存在file中,而不是默认文件a.out-g产生用于调试和排错的扩展符号表,用于GDB调试,切记-g和-O通常不能一起使用-w取消所有警告-W给出更详细的警告-Onum优化,可以指定0-3作为优化级别,级别0表示没有优化-xlanguage默认为-xnone,即依靠后缀名确定文件类型,加上-xlan确定后面所有文件类型,直到下一个-x出现为止-Dmacro=类似于源程序里的#define,在-Dmacro中的macro可被源程序识别,例如gcc-DNUM-DFILE=bbs.txthello.c-ohello,第一个-D选项定义宏NUM,在程序中可以使用#ifdef来检查是否被设置,第二个-D定义宏FILE,在源程序中可用-Umacro类似于源程序开头定义#undefmacro,也就是取消源程序中的某个宏定义-Idir将dir目录加到搜寻头文件的目录中去,并优先于gcc中缺省的搜索目录,有多个-I选项时,按照出现顺序搜索-Ldir将dir目录加到搜索-lname选项指定的函数库文件的目录列表中去,并优先于gcc缺省的搜索目录,有多个-L选项时,按照出现顺序搜索-lname在链接时使用函数库libname.a,链接程序在-Ldir指定的目录和/lib、/usr/lib目录下寻找该库文件,在没有使用-static选项时,如果发现共享函数库libname.so,则使用libname.so进行动态链接-fPIC产生位置无关的目标代码,可用于构造共享函数库-static禁止与共享函数库链接-shared尽量与共享函数库链接(默认)1.编译单个文件vi hello.c /创建源文件hello.cgcc -o hello hello.c /编译为可执行文件hello,在默认情况下产生的可执行文件名为a.out./hello /执行文件,如果只写hello是错误的,因为系统会将hello当指令来执行,然后报错2.编译多个源文件vi message.cgcc -c message.c /输出message.o文件,是一个已编译的目标代码文件vi main.cgcc -c main.c /输出main.o文件gcc -o all main.o message.o /执行连接阶段的工作,然后生成all可执行文件./all注意:gcc对如何将多个源文件编译成一个可执行文件有内置的规则,所以前面的多个单独步骤可以简化为一个命令。vi message.cvi main.cgcc -o all message.c main.c./all3.使用外部函数库GCC常常与包含标准例程的外部软件库结合使用,几乎每一个linux应用程序都依赖于GNU C函数库GLIBC。vi trig.cgcc -o trig -lm trig.cGCC的-lm选项,告诉GCC查看系统提供的数学库libm。函数库一般会位于目录/lib或者/usr/lib中。4.共享函数库和静态函数库静态函数库:每次当应用程序和静态连接的函数库一起编译时,任何引用的库函数的代码都会被直接包含进最终二进制程序。共享函数库:包含每个库函数的单一全局版本,它在所有应用程序之间共享。vi message.cvi hello.cgcc -c hello.cgcc -fPIC -c message.cgcc -shared -o libmessge.so message.o其中,PIC命令行标记告诉GCC产生的代码不要包含对函数和变量具体内存位置的引用,这是因为现在还无法知道使用该消息代码的应用程序会将它链接到哪一段地址空间。这样编译输出的文件message.o可以被用于建立共享函数库。-shared标记将某目标代码文件变换成共享函数库文件。gcc -o all -lmessage -L. hello.o-lmessage标

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论