linux编译相关(c和c++)

显示编译详情

 

gcc  --verbose  

 

 

1、预处理阶段

一段程序中通常会包含宏定义和头文件包含,预处理阶段就是对这两者进行处理,同时包括了语法检查,该阶段的命令为gcc -E hello.c -o hello.i

生成一个hello.i文件。文件hello.i文件特别大,是因为程序将头文件进行了替换,导致文件大的现象,所以在实际编程过程中,如果用不到的头文件就不需要包含在程序中,否则会造成时间和空间的浪费。

 

选项 -E 使 g++ 将源代码用编译预处理器处理后不再执行其他动作。下面的命令预处理源码文件 helloworld.cpp 并将结果显示在标准输出中:

 

g++ -o haikang/haikang_ipc.o -c haikang/haikang_ipc.cpp -std=gnu++11 -Wall -c -ggdb3 -DHUAWEI_ANDROID  -DHUAWEI_ANDROID_8V9A  -DDEBUG  -I../..//include -I../..//include/poco-1.8.0.1 -I../..//include/libpcap-1.7.4 -I../..//dpi/include/ -I../..//send/include/ -I../..//parser/include/ -I../..//reassem/include/ -I../..//save/include/ -I../..//common/include/ -I../include/ -I./haikang/ -I./haikang/incCn -I../..//common/include/poco-1.8.0.1  -L../..//lib/x64 -lreassem  -Wl,-rpath=./:./HCNetSDKCom -lhcnetsdk 

 

# g++ -E haikang/haikang_ipc.cpp -std=gnu++11 -Wall -c -ggdb3 -DHUAWEI_ANDROID  -DHUAWEI_ANDROID_8V9A  -DDEBUG  -I../..//include -I../..//include/poco-1.8.0.1 -I../..//include/libpcap-1.7.4 -I../..//dpi/include/ -I../..//send/include/ -I../..//parser/include/ -I../..//reassem/include/ -I../..//save/include/ -I../..//common/include/ -I../include/ -I./haikang/ -I./haikang/incCn -I../..//common/include/poco-1.8.0.1  -L../..//lib/x64 -lreassem  -Wl,-rpath=./:./HCNetSDKCom -lhcnetsdk  >tmp.bak
 

 

 

 

--no-as-needed

https://my.oschina.net/yepanl/blog/2222870

GCC/G++提供了 -Wl,--as-needed 和 -Wl,--no-as-needed 两个选项,这两个选项一个是开启特性,一个是取消该特性。

    在生成可执行文件的时候,通过 -lxxx 选项指定需要链接的库文件。以动态库为例,如果我们指定了一个需要链接的库,则连接器会在可执行文件的文件头中会记录下该库的信息。而后,在可执行文件运行的时候,动态加载器会读取文件头信息,并加载所有的链接库。在这个过程中,如果用户指定链接了一个毫不相关的库,则这个库在最终的可执行程序运行时也会被加载,如果类似这样的不相关库很多,会明显拖慢程序启动过程。

    这时,通过指定 -Wl,--as-needed 选项,链接过程中,链接器会检查所有的依赖库,没有实际被引用的库,不再写入可执行文件头。最终生成的可执行文件头中包含的都是必要的链接库信息。-Wl,--no-as-needed 选项不会做这样的检查,会把用户指定的链接库完全写入可执行文件中。

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值