Linux学习日志(15)- 常用GCC编译控制选项

GCC的基本用法很简单:

gcc [选项] 文件名

GCC后面有很多编译控制选项,使得GCC可以根据不同的参数进行不同的编译处理,可供GCC调用的参数大约有100多个,但实际常用并不多,这里简单的总结一下,以方便使用。

>> -c : 只编译不链接,编译器只是将输入的.c等源代码文件生成.o为后缀的目标文件,通常用于编译不包含主程序的子程序文件

>> -S : 只对文件进行编译,不汇编和链接

>> -E : 只对文件进行预处理,不编译汇编和链接

>> -o filename: 确定输出文件的名称为filename,这个名称不能我源文件同名,如果不给了这个选项,gcc就给出预设的可执行文件a.out

>. -g : 产生符号调试工具(GNU的gdb)所必需的符号信息,要想对源代码进行调试,就必需加入这个选项,g也分等级,默认是-g2,-g1是最基本的,-g3包含宏信息。

>> -DFOD=BAR : 在命令行定义预处理宏FOD,值为BAR

>> -O : “O”是大写,对程序进行优化编译,链接,采用这个选项,整个源代码会在编译,链接过程中进行优化处理,这样产生的可执行文件是执行效率可以提高,但是编译,链接的速度就相应的要慢一些。

>> -ON : 指定代码的优化等级N,可取值为0、1、2、3;O0没有优化等级,O3优化等级最高。

>> -Os : 使用-O2的优化部分选项,同时对代码尺寸进行优化。

>> -Idirname: 将dirname目录添加到程序头文件搜索列表中,是在预编译过程中使用的参数

>> -Ldirname : 将dirname目录加入到库文件的搜索目录列表中

>> -l FOO : 链接名为libFOO的函数库

>> -static: 链接静态库

>> -ansi : 支持ANSI/ISO C的标准语法,取消GNU语法中与该标准相冲突的部分

>> -w : (小写)关闭所有警告,不建议使用。

>> -W : (大写)开启所有gcc能提供的警告

>> -werror: 将所有警告转换为错误,开启该选项,遇到警告都会中止编译

>> -v : 显示gcc执行时的详细过程,GCC及其相关程序的版本号。

顺便说一下动态链接与静态链接

>>  动态链接使用动态链接库进行链接,生成的程序在执行的时候需要加载所需要的动态库才能运行。动态链接生成的程序小巧,但是必须依赖动态库,否则无法执行。

>> Linux下的动态链接库实际是共享目标文件,一般是.so文件,类似于windows下的.dll文件

>> 静态链接使用静态库进行链接,生的程序包含程序运行所需要的全部库,可以直接运行,不过体积较大。

>> Linux下静态库是汇编产生的.o文件的集合,一般以.a文件形式出现。


最后,再吼一下俺的口号:

每天进步一点点,开心多一点^_^

--2017年3月21日 17:36:24

  • 4
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值