GCC命令选项简介

发布时间:2019-08-06 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了GCC命令选项简介脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。

gcc命令的选项多达上百个,分别对应不同的功能,这里就一些平时比较常用的选项做简要解释,详细的gcc命令解释请自行查看手册:man gcc。

代码文件生成可执行文件的过程

首先需要明白的是,gcc对源代码文件的编译分为四个过程,分别是预处理,编译,汇编,连接。连接之后生成可执行文件。

每一个过程对应的选项是:

预处理:-E 这一步产生输出到标准输出,也就是说默认是输出到屏幕上,所以要加上-o选项,一般-o选项后面跟的文件名以.i结尾(.i结尾的文件为gcc的c语言预处理文件)。

编译:-s 这一步的输入文件是预处理文件,默认输出文件是以.s结尾的汇编语言文件。如果不加-o选项,产生的汇编语言文件与输入的预处理文件同名。

汇编:-c 这一步的输入文件为汇编语言文件,默认输出文件是以.o结尾的目标文件。如果不加-o选项,产生的目标文件与输入的汇编语言文件同名。

gcc命令后可以跟一个目标文件,如果不加-o选项,默认产生一个文件名为a.out的可执行文件。另外,gcc命令后可以直接跟一个.c源程序文件,这样可以不用手动执行以上步骤,直接生产可执行文件,并且不产生多余的文件输出。

优化选项

-O:加上这个选项可以控制程序编译过程中的优化级别,当然优化的代价是付出更多的编译时间。下面分别介绍它的优化级别:

-O0:效果等同于不加-O选项,即不对代码做任何程度的优化。

-O1:这是最基本的优化等级。编译器会在不花费太多编译时间的同时试图生成更快更小的代码。这些优化是非常基础的,但一般这些任务肯定能顺利完成。

-O2:-O1的进阶。这是推荐的优化等级,除非你有特殊的需求。-O2会比-O1启用多一些标记。设置了-O2后,编译器会试图提高代码性能而不会增大体积和大量占用的编译时间。

-O3:这是最高最危险的优化等级。用这个选项会延长编译代码的时间,并且在使用gcc4.x的系统里不应全局启用。自从3.x版本以来gcc的行为已经有了极大 地改变。在3.x,-O3生成的代码也只是比-O2快一点点而已,而gcc4.x中还未必更快。用-O3来编译所有的软件包将产生更大体积更耗内存的二进 制文件,大大增加编译失败的机会或不可预知的程序行为(包括错误)。这样做将得不偿失,记住过犹不及。在gcc 4.x.中使用-O3是不推荐的。

-Os:这个等级用来优化代码尺寸。其中启用了-O2中不会增加磁盘空间占用的代码生成选项。这对于磁盘空间极其紧张或者CPU缓存较小的机器非常有用。但也可能产生些许问题,因此软件树中的大部分ebuild都过滤掉这个等级的优化。使用-Os是不推荐的。

其他常用选项

-g:启用这个选项会在最后生成的可执行文件中包含源代码的符号信息,这样才能在后续过程中使用GDB调试工具对程序进行调试。

-Wall:这个选项表示在编译源代码的过程中报告其中出现的警告信息,不开启此选项的话gcc默认可能会忽略某些编译过程中出现的警告。

-Werror:开启此选项后,gcc在编译源代码的时候不止会捕获所有的警告信息,而且在遇到警告时会停止编译。开启次选项的目的主要在于提高代码的书写质量

-i:此选项后面一个目录。默认情况下,gcc会从系统的头文件目录(Linux下是/usr/include/)下搜索头文件,加上此选项后,此选项后面所跟着的目录也会被列入头文件搜索路径。

脚本宝典总结

以上是脚本宝典为你收集整理的GCC命令选项简介全部内容,希望文章能够帮你解决GCC命令选项简介所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。