[应用相关] 关于GCC 的一些使用介绍

[复制链接]
1694|26
 楼主| junpeng324 发表于 2019-2-27 22:32 | 显示全部楼层 |阅读模式
一.使用 GCC 编译程序时,编译过程可以细分为四个阶段:
1. 预处理(Pre-Processing)
2. 编译(Compiling)
3. 汇编(Assembling)
4. 链接(Linking)
 楼主| junpeng324 发表于 2019-2-27 22:33 | 显示全部楼层
Gcc 通过后缀来区别输入文件的类别:
1. .c 后缀文件 : C 语言源代码文件
2. .h 后缀文件 : 头文件
3. .a 后缀文件 :有目标文件构成的库文件
4. .C .cc .cxx 后缀文件 : c++源码文件
5. .i 后缀文件 : 预处理过的 C 源代码文件
6. .ii 后缀文件 : 预处理过的 c++源代码文件
7. .o 后缀文件 : 编译后的目标文件
8. .s 后缀文件 : 汇编语言源代码文件
9. .S 后缀文件 : 经过预编译的汇编语言源代码文件
 楼主| junpeng324 发表于 2019-2-27 22:34 | 显示全部楼层
使用 vi 新建 hello.c 文件 编写程序后退出
558535c769fdd27e47.png
 楼主| junpeng324 发表于 2019-2-27 22:34 | 显示全部楼层
gcc hello.c -o hello 将 hello.c 文件进行编译
992455c769ff66edd4.png
 楼主| junpeng324 发表于 2019-2-27 22:34 | 显示全部楼层
ll           查看文件属性
74115c76a00b15f79.png
 楼主| junpeng324 发表于 2019-2-27 22:35 | 显示全部楼层
./hello      将hello可执行文件执行
983645c76a01b2e9e5.png
 楼主| junpeng324 发表于 2019-2-27 22:35 | 显示全部楼层
四.Gcc 的基本使用方法: gcc [options][filenames]
  options: 编译器所需要的编译选项
  filename:需要编译的文件名
 楼主| junpeng324 发表于 2019-2-27 22:36 | 显示全部楼层
1.-o + outfilename: 确定执行文件的名称为outfilename  如果不指定outfilename  gcc 默认输出可执行文件a.out
56725c76a062ce986.png
 楼主| junpeng324 发表于 2019-2-27 22:36 | 显示全部楼层
. -c 只编译,不连接成功为可执行文件,编译器只输出源代码生成的.o 为后缀的文件
570915c76a07aafe56.png
 楼主| junpeng324 发表于 2019-2-27 22:37 | 显示全部楼层
-g 产生调试工具所必须的符号信息,要想对编译出的程序进行调试,就必须加入这个选
项,加-g 后输出程序变大。
未加入-g 时,hello 可执行文件的大小:
788745c76a09c91de5.png
 楼主| junpeng324 发表于 2019-2-27 22:37 | 显示全部楼层
加入-g时的hello可执行文件的大小:
812225c76a0ae2ea6a.png
 楼主| junpeng324 发表于 2019-2-27 22:37 | 显示全部楼层
-O (大写) 对整个程序进行优化编译,链接使可执行的文件执行效率得到提高。
 楼主| junpeng324 发表于 2019-2-27 22:38 | 显示全部楼层
-O2  比-O更好的优化编译,过程不会比较慢。
968735c76a0d78e157.png
 楼主| junpeng324 发表于 2019-2-27 22:38 | 显示全部楼层
-I +filepath :将filepath所指出的目录加到程序头文件目录列表中。
  例: gcc  -I/home/lm/inc hello.c -o hello  (在/home/lm 目录下新建inc目录)
850515c76a0f1b7b54.png
 楼主| junpeng324 发表于 2019-2-27 22:38 | 显示全部楼层
-L libpath: 将libpath所指出的目录加入到库文件的目录列表中。
 楼主| junpeng324 发表于 2019-2-27 22:39 | 显示全部楼层
-static : 静态链接库文件
库有静态与动态两种,动态通常用.so为后缀,静态用.a为后缀。动态链接要比静态链接节约内存空间。
  例: gcc -static hello.c -o hello
358555c76a11c8d52a.png
 楼主| junpeng324 发表于 2019-2-27 22:39 | 显示全部楼层
-Wall 生成所有警告信息,-w 不生成警告信息
 楼主| junpeng324 发表于 2019-2-27 22:39 | 显示全部楼层
-D 相当于#define   例 gcc  -DYES  hello.c -o hello  
八层楼 发表于 2019-3-11 12:54 | 显示全部楼层
GCC是keil的工具吗
观海 发表于 2019-3-11 12:58 | 显示全部楼层
非常感谢楼主分享
您需要登录后才可以回帖 登录 | 注册

本版积分规则

37

主题

1130

帖子

8

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