gcc 编译选项介绍

常用选项

选项说明
-I头文件所在路径
-c只做预处理 编译 汇编,得到二进制文件
-g编译时添加调试文件
-Onn=0~3 ,编译优化,n越大优化得越多
-Wall提示更多警告信息
-D<DEF>编译时定义宏,注意-D和DEF之间没有空格
-E生产预处理信息

宏定义

定义说明
_GNU_SOURCEglibc 默认不自动支持GNU扩展,一般加上该选项,避免编译问题

_GNU_SOURCE:

 glibc does not make the GNU extensions available automatically. If a program depends on GNU 
 extensions or some other non-standard functionality, it is necessary to compile it with the C 
 compiler option -D_GNU_SOURCE, or better, to put `#define _GNU_SOURCE' at the beginning 
 of your source files, before any C library header files are included. This difference normally 
 manifests itself in the form of missing prototypes and/or data type definitions. Thus, if you get  	   such errors, the first thing you should do is try defining _GNU_SOURCE and see if that makes the 
 problem go away. 

选项

-Wl,-Bstatic &-Wl,-Bdynamic

默认情况下,GCC/G++链接时优先链接动态库,如果没有动态库,则链接相应的静态库。同时,GCC/G++也提供了链接选项 -Wl,-Bstatic 和 -Wl,-Bdynamic 供用户指定链接动态库或者静态库。

-Wl,-Bstatic指示跟在后面的-lxxx选项链接的都是静态库
-Wl,-Bdynamic指示跟在后面的-lxxx选项链接的都是动态库。

        g++ -L. -o main main.cc -Wl,-Bstatic -ltest -Wl,-Bdynamic

前面的 -Wl,-Bstatic指示链接libtest.a静态库,后面的 -Wl,-Bdynamic指示链接系统动态库。

选项说明
-shared产生共享对象
-static使用静态链接,默认是动态链接
-e xx指定xx 为程序的入口函数
-fpic产生地址无关代码,较小且较快,但某些平台会有限制符号数量和代码长度,
-fPIC产生地址无关代码,没有限制。一般用这个
-no-builtinGCC编译器提供了很多内置函数(Built-in function),会把常用的C库函数替换成编译的内置函数,以优化功能,这个选项就是关闭内置函数功能,不要被其优化
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值