gcc编译器使用简明指南

gcc编译器使用简明指南

ID:11029111

大小:39.00 KB

页数:3页

时间:2018-07-09

gcc编译器使用简明指南_第1页
gcc编译器使用简明指南_第2页
gcc编译器使用简明指南_第3页
资源描述:

《gcc编译器使用简明指南》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、gcc编译器使用简明指南gcc对文件的处理需要经过预处理->编译->汇编->链接的步骤,从而产生一个可执行文件,各部分对应不同的文件类型,具体如下:file.c     c程序源文件file.i      c程序预处理后文件file.cxx  c++程序源文件,也可以是file.cc/file.cpp/file.c++file.ii      c++程序预处理后文件file.h     c/c++头文件file.s     汇编程序文件file.o     目标代码文件gcc [选项] 文件列表-ansi       

2、 强制完全ANSI一致-c           仅编译或汇编,生成目标代码文件,将.c、.i、.s等文件生成.o文件,其余文件被忽略-S           仅编译,不进行汇编和链接,将.c、.i等文件生成.s文件,其余文件被忽略-E           仅预处理,并发送预处理后的.i文件到标准输出,其余文件被忽略-o file      创建可执行文件并保存在file中,而不是默认文件a.out-g           产生用于调试和排错的扩展符号表,用于GDB调试,切记-g和-O通常不能一起使用-w        

3、   取消所有警告-W           给出更详细的警告-O [num]     优化,可以指定0-3作为优化级别,级别0表示没有优化-x language  默认为-x none,即依靠后缀名确定文件类型,加上-x lan确定后面所有文件类型,直到下一个-x出现为止-D macro[=]  类似于源程序里的#define,在-D macro中的macro可被源程序识别,例如gcc -D NUM -D FILE="bbs.txt" hello.c -o hello,第一个-D选项定义宏NUM,在程序中可以使用#

4、ifdef来检查是否被设置,第二个-D定义宏FILE,在源程序中可用-U macro     类似于源程序开头定义#undef macro,也就是取消源程序中的某个宏定义-I dir       将dir目录加到搜寻头文件的目录中去,并优先于gcc中缺省的搜索目录,有多个-I选项时,按照出现顺序搜索-L dir       将dir目录加到搜索-lname选项指定的函数库文件的目录列表中去,并优先于gcc缺省的搜索目录,有多个-L选项时,按照出现顺序搜索-lname       在链接时使用函数库libname.a,链

5、接程序在-L dir指定的目录和/lib、/usr/lib目录下寻找该库文件,在没有使用-static选项时,如果发现共享函数库libname.so,则使用libname.so进行动态链接        -fPIC        产生位置无关的目标代码,可用于构造共享函数库-static      禁止与共享函数库链接-shared      尽量与共享函数库链接(默认)1.编译单个文件vihello.c              //创建源文件hello.cgcc-ohellohello.c //编译为可执行文件he

6、llo,在默认情况下产生的可执行文件名为a.out./hello                 //执行文件,如果只写hello是错误的,因为系统会将hello当指令来执行,然后报错2.编译多个源文件vimessage.cgcc-cmessage.c        //输出message.o文件,是一个已编译的目标代码文件vimain.cgcc-cmain.c           //输出main.o文件gcc-oallmain.omessage.o   //执行连接阶段的工作,然后生成all可执行文件./all注意

7、:gcc对如何将多个源文件编译成一个可执行文件有内置的规则,所以前面的多个单独步骤可以简化为一个命令。vimessage.cvimain.cgcc-oallmessage.cmain.c./all3.使用外部函数库GCC常常与包含标准例程的外部软件库结合使用,几乎每一个linux应用程序都依赖于GNUC函数库GLIBC。vitrig.cgcc-otrig-lmtrig.cGCC的-lm选项,告诉GCC查看系统提供的数学库libm。函数库一般会位于目录/lib或者/usr/lib中。4.共享函数库和静态函数库静态函数库:

8、每次当应用程序和静态连接的函数库一起编译时,任何引用的库函数的代码都会被直接包含进最终二进制程序。共享函数库:包含每个库函数的单一全局版本,它在所有应用程序之间共享。vimessage.cvihello.cgcc-chello.cgcc-fPIC-cmessage.cgcc-shared-olibmessge.somessage.

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。