注册 登录
电子工程世界-论坛 返回首页 EEWORLD首页 频道 EE大学堂 下载中心 Datasheet 专题
懒猫爱飞的个人空间 https://home.eeworld.com.cn/space-uid-238351.html [收藏] [复制] [分享] [RSS]
日志

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

热度 2已有 2513 次阅读2017-3-22 13:16 |个人分类:linux学习日志| Linux, gcc

版权声明:本文为博主原创文章,未经博主允许不得转载,交流QQ:2912615383

GCC的基本用法很简单:

gcc [选项] 文件名

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

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

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

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

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

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

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

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

Ø  -ON : 指定代码的优化等级N,可取值为0123O0没有优化等级,O3优化等级最高。

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

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

Ø  -L dirname : 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月22日 13:16:33

发表评论 评论 (3 个评论)
回复 eric_wang 2017-3-22 17:03
感谢分享
回复 懒猫爱飞 2017-3-23 18:16
eric_wang: 感谢分享
  
回复 codeword 2024-11-4 06:14
  

facelist doodle 涂鸦板

您需要登录后才可以评论 登录 | 注册

热门文章