gcc常用参数解析【学习笔记】

gcc 常用参数解析


小生正在学习linux c,so将gcc常用参数总结一下,权当学习笔记,也希望对有用的菜鸟有帮助,有不对的地方希望指正。


第一阶段:-o,-g,-c,-Wall,-O

-o:此参数用来指定文件名,不用每次都a.out了。

-g:此参数作用是在可执行文件中加入源代码的信息以供gdb调试使用。 比如可执行文件中第几条机器指令对应源代码的第几行,但并不是把整个源文件嵌入到可执行文件中。

-c:只生成目标文件,即 .o 文件。

-Wall:通常情况下gcc对一些不重要的警告是不提示的,而加上此参数gcc就会提示所有警告,不管严重还是不严重。编译时加上-Wall是个好习惯。

-O:编译器优化,共四个级别。


第二阶段:-E,-S,-I,-l,-L,-v

-E:只做预处理而不编译。

-S:生成汇编代码。

-I:告诉编译器去那里找头文件。

-L:告诉编译器去哪里找需要的库文件,注意,即使库文件就在当前目录下,编译器也不会去找的,所以必须加此参数,除非你的库在默认的寻找目录里,默认目录可以用gcc -print-search-dirs查看。

-l:此参数后紧跟库的名字告诉编译器要链接的库,例如 -ljpeg,即是告诉编译器要链接的库是libjpeg。

-v:可以看到详细的编译过程。

第三阶段:-share,-static,-fPIC

-share: 此选项将尽量使用动态库,所以生成文件比较小,但是需要系统由动态库。

-static:此选项将禁止使用动态库,所以,编译出来的东西,一般都很大,也不需要什么动态连接库,就可以运行。

-fPIC:-f后跟一些编译选项,PIC是其中一种,表示生成位置无关的代码(这牵扯到链接时地址重定位的一些知识)。



第四阶段:-M,-MM

-M:此选项可以自动分析目标文件和源文件的依赖关系。

-MM:和上面的那个一样,但是它将忽略由#include<file>造成的依赖关系。

tips: 其中编译过程很容易记混,但这里面有一个规律:参数是ESC ,而生成的文件是ISO。这样就好记点了。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值