Keep on going, never give up.

GCC几个常用选项

本文汇总GCC编译器的常用选项,gcc选项太多了,其实很多都是不常用,真的需要用到很多人也未必清楚,实在没办法只能去查找官方文档,具体可参考《Gcc编译器介绍》一文。本文只列出常用的几个选项,并加以介绍。 

首先需明确,编译C和C++文件使用不同的编译器,因为这涉及到不同的编译缺省配置:

  • gcc 为预处理后的文件(.i)是C文件,并且设定C形式的连接。
  • g++ 为预处理后的文件(.i)是C++文件,并且设定C++形式的连接。

编译参数如下(部分):

-c 编译或汇编源文件,生成目标文件(.o)

-o file指定输出文件为file,一般用于指定输出一个可执行文件或是链接库名称,如没有使用“-o”选项,默认输出是可执行文件“a.out”

-ansi 支持符合ANSI标准的C程序。

-shared 表示指定生成动态连接库,让连接器生成T类型的导出符号表,有时候也生成弱连接W类型的导出符号。

-fPIC 表示编译为位置独立的代码,不用此选项的话编译后的代码是位置相关的所以动态载入时是通过代码拷贝的方式来满足不同进程的需要,而不能达到真正代码段共享的目的。

–Idir 表示到dir目录下找头文件

-Ldir 表示到dir目录下搜索链接库,“.”表示当前目录。

-ltest 表示要链接动态库libtest.a文件,这是gcc隐式约定命名规则,也就是库名带lib头,比如libtest.a,而在链接参数上则不带,比如-ltest就表示要链接libtest.a

-rpath 表示运行时搜索的目录,比如运行时要找 .so 文件,则会从这个选项里指定的地方去找。交叉编译时只有配合 --sysroot 选项才能起作用。

-rpath_link 表示链接时搜索目录,一般用作隐式指定路径,比如:链接A.so,但A.so又需要B.so,那么连接器则会优先到-rpath_link指定路径下搜索。

相关评论(0):  

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

订阅博客

最新文章

本站采用创作共用版权协议, 要求署名、非商业用途和保持一致. 转载也必须遵循“署名-非商业用途-保持一致”的创作共用协议. 返回顶部
Copyright@2005-2016 Metsky.com, All rights Reserved.