GCC15个命令汇总
来源:互联网 发布:云头条 | 云计算云媒体 编辑:程序博客网 时间:2024/05/17 05:03
GCC编译器非常强大 ,在各个发行的linux系统中都非常流行,本文介绍的是一些常用的gcc编译选项
下面这段代码将回围绕整个文章:
编辑main.c如下.
GCC编译选项
1.指定输出可执行文件的名字
使用最基本的gcc编译格式
执行完上面这句命令,会在当前目录下输出一个名为a.out的可执行文件。使用 -o选项可以指定输出的可执行文件名称。
执行完上面语句会在当前目录下输出一个名为main的可执行文件。
要想知道gcc编译器编译执行的过程请参考下面这个链接
http://www.thegeekstuff.com/2011/10/c-program-to-an-executable/
2.让所有编译警告都显示出来
编辑一段带警告的代码如下:
执行gcc -Wall main.c -o main 会得到未初始化变量i的警告.
3.指定 -E编译选项,使得只输出预编译结果
上面这条gcc 编译命令会将输出重定向到输出文件当中。上面的例子中,main.i文件中的内容就是执行-E选项gcc命令的结果。
4.通过编译选项 -S 输出汇编代码
main.s 会包含main.c的汇编输出代码
5.指定-C 输出编译后的代码
执行上面这条命令会输出main.o文件,包含机器指令代码或者编译后的代码。
6.通过编译选项-save-temps 输出所有的中间代码。
7.链接共享库(动态链接库)指定编译选项 -l
gcc命令指出再执行链接main.c 代码时,会链接上-lCPPfile.so动态链接库来完成生成main可执行文件。
8.指定编译选项-fPIC 创建独立的(无关联的)地址信息代码。
当创建动态链接库时,独立位置信息(position independent)代码也需要生成。这可以帮助动态链接库或者跟多的加载地址信息来替代其他相对的地址信息。所以-fPIC这个选项作用很大,能快速准确定位错误地址。
下面是一个例子,
9.打印输出有个执行过程的信息 使用-V选项
当编译源文件时,-V选项会显示所有编译步骤的调试信息。
例子:
10.指定编译选项-ansi,支持ISO C89 programs.
通过-ansi选项开启支ISO C89风格.
看如下代码:
执行上面代码附加-ansi编译选项,编译器会输出错误因为c++ 不支持ISO C89风格。
gcc 会抛出上面错误信息。
11.指定编译选项 -funsigned-char选项将char类型解释为unsigned char类型。
通过这个编译选项,char 类型会被认为是unsigned char.
例子:
执行上面代码输出:
12.指定编译选项 -fsigned-char选项将unsigned char类型解释为 char类型。
13.指定-D选项 开启编译时的宏
例子如下:
通过编译选项 可以直接定义宏
14.将编译警告转换成错误.
编译警告很多时候会被我们忽视,在特殊场合我们还是需要重视编译警告,如果能把编译警告变长直接输出错误,那我们的重视程度会提高很多并去解决。
example:
上述代码未初始化变量c,警告变成了错误提示.
15.通过文件指定编译选项,指定@编译选项
比较神奇的功能。可以使用@编译选项然后跟着文件名,一个以上的编译选项用空格 隔开。
example:
原文链接:
http://www.thegeekstuff.com/2012/10/gcc-compiler-options
- GCC15个命令汇总
- 150个常用的Linux命令汇总
- Linux最常用150个命令汇总
- Linux常用的命令--60个命令总结汇总
- 34个Android常用adb shell命令汇总
- 34个Android常用adb shell命令汇总
- 34个Android常用adb shell命令汇总
- Linux运维人员最常用 150 个命令汇总
- Linux 运维人员最常用 150 个命令汇总
- Linux运维人员最常用 150 个命令汇总
- 命令汇总
- Linux企业运维人员最常用150个命令汇总
- Linux企业运维人员最常用150个命令汇总
- Linux 企业运维人员最常用 150 个命令汇总! 收藏了!
- Linux企业运维人员最常用150个命令汇总
- Linux 企业运维人员最常用 150 个命令汇总! 收藏了!
- Linux企业运维人员最常用150个命令汇总
- Linux企业运维人员最常用150个命令汇总
- Educational Codeforces Round 33 (Rated for Div. 2) E. Counting Arrays(组合数学)
- 关于未来科技的想象
- php-1
- jQuery ajax读取本地json文件
- AS 中 Plugin for Gradle 和 Gradle 之间的版本对应关系
- GCC15个命令汇总
- 关于keep-alive的几点疑惑
- 第五周项目3括号的匹配
- 1130. Infix Expression (25)
- PageRank算法及MapReduce实现
- 712. Minimum ASCII Delete Sum for Two Strings
- 三角形的边
- ROS学习笔记(六)
- Android在application中使用SharedPreference注意事项