[应用相关] 关于GCC 编译器

[复制链接]
1308|17
 楼主| hanzhen654 发表于 2019-3-9 14:08 | 显示全部楼层 |阅读模式
使用GCC编译程序时,编译过程可以细分为四个阶段:
1. 预处理(Pre-Processing
2. 编译(Compiling
3. 汇编(Assembling
4.  链接(Linking

 楼主| hanzhen654 发表于 2019-3-9 14:09 | 显示全部楼层
Gcc通过后缀来区别输入文件的类别:
1.   .c后缀文件 : C语言源代码文件
2.   .h后缀文件 : 头文件
3.   .a后缀文件 :有目标文件构成的库文件
4.   .C  .cc  .cxx 后缀文件 : c++源码文件
5.   .i 后缀文件 : 预处理过的C源代码文件
6.   .ii 后缀文件 : 预处理过的c++源代码文件
7.   .o 后缀文件 : 编译后的目标文件
8.   .s 后缀文件 : 汇编语言源代码文件
   .S 后缀文件 : 经过预编译的汇编语言源代码文件
 楼主| hanzhen654 发表于 2019-3-9 14:09 | 显示全部楼层
使用vi 新建hello.c文件 编写程序后退出
542015c835897c5f03.png
 楼主| hanzhen654 发表于 2019-3-9 14:09 | 显示全部楼层
gcc  hello.c  -o  hello    将hello.c 文件进行编译
448075c8358b268b9d.png
 楼主| hanzhen654 发表于 2019-3-9 16:02 | 显示全部楼层
ll           查看文件属性
793775c837314d4e72.png
 楼主| hanzhen654 发表于 2019-3-9 16:02 | 显示全部楼层
./hello      将hello可执行文件执行
91215c83732a81829.png
 楼主| hanzhen654 发表于 2019-3-9 16:03 | 显示全部楼层
1.-o + outfilename: 确定执行文件的名称为outfilename  如果不指定outfilename  gcc 默认输出可执行文件a.out
754525c83734d352b9.png
 楼主| hanzhen654 发表于 2019-3-9 16:03 | 显示全部楼层
2.-c 只编译,不连接成功为可执行文件,编译器只输出源代码生成的.o为后缀的文件
812525c83736898293.png
 楼主| hanzhen654 发表于 2019-3-9 16:04 | 显示全部楼层
3.-g 产生调试工具所必须的符号信息,要想对编译出的程序进行调试,就必须加入这个选项,加-g后输出程序变大。
未加入-g时,hello可执行文件的大小:
731545c8373a02ac04.png
 楼主| hanzhen654 发表于 2019-3-9 16:05 | 显示全部楼层
加入-g时的hello可执行文件的大小:
816415c8373b72f63c.png
 楼主| hanzhen654 发表于 2019-3-9 16:05 | 显示全部楼层
4.-O (大写) 对整个程序进行优化编译,链接使可执行的文件执行效率得到提高。
 楼主| hanzhen654 发表于 2019-3-9 16:05 | 显示全部楼层
5.-O2  比-O更好的优化编译,过程不会比较慢。
765865c8373dd8c577.png
 楼主| hanzhen654 发表于 2019-3-9 16:06 | 显示全部楼层
6.-I +filepath :将filepath所指出的目录加到程序头文件目录列表中。
  例: gcc  -I/home/lm/inc hello.c -o hello  (在/home/lm 目录下新建inc目录)
862465c8373ef56680.png
 楼主| hanzhen654 发表于 2019-3-9 16:06 | 显示全部楼层
7.-L libpath: 将libpath所指出的目录加入到库文件的目录列表中。
 楼主| hanzhen654 发表于 2019-3-9 16:07 | 显示全部楼层
8.-static : 静态链接库文件
库有静态与动态两种,动态通常用.so为后缀,静态用.a为后缀。动态链接要比静态链接节约内存空间。
 楼主| hanzhen654 发表于 2019-3-9 16:09 | 显示全部楼层
8.-static : 静态链接库文件
库有静态与动态两种,动态通常用.so为后缀,静态用.a为后缀。动态链接要比静态链接节约内存空间。
262775c837457f04ac.png
 楼主| hanzhen654 发表于 2019-3-10 22:10 | 显示全部楼层
-Wall 生成所有警告信息,-w 不生成警告信息
-D 相当于#define   例 gcc  -DYES  hello.c -o hello
renzheshengui 发表于 2019-4-1 12:18 | 显示全部楼层
非常感谢楼主分享
您需要登录后才可以回帖 登录 | 注册

本版积分规则

73

主题

1766

帖子

2

粉丝
快速回复 在线客服 返回列表 返回顶部