一.使用GCC编译程序时,编译过程可以细分为四个阶段:
- 预处理(Pre-Processing)
- 编译(Compiling)
- 汇编(Assembling)
- 链接(Linking)
二.Gcc通过后缀来区别输入文件的类别:
- .c后缀文件 : C语言源代码文件
- .h后缀文件 : 头文件
- .a后缀文件 :有目标文件构成的库文件
- .C .cc .cxx 后缀文件 : c++源码文件
- .i 后缀文件 : 预处理过的C源代码文件
- .ii 后缀文件 : 预处理过的c++源代码文件
- .o 后缀文件 : 编译后的目标文件
- .s 后缀文件 : 汇编语言源代码文件
- .S 后缀文件 : 经过预编译的汇编语言源代码文件
三.使用vi 新建hello.c文件 编写程序后退出
gcc hello.c -o hello 将hello.c 文件进行编译
ll 查看文件属性
./hello 将hello可执行文件执行
- Gcc 的基本使用方法: gcc [options][filenames]
options: 编译器所需要的编译选项
filename:需要编译的文件名
常用编译选项:
1.-o +
outfilename: 确定执行文件的名称为
outfilename 如果不指定
outfilename gcc 默认输出可执行文件a.out
2.-c 只编译,不连接成功为可执行文件,编译器只输出源代码生成的.o为后缀的文件
3.-g 产生调试工具所必须的符号信息,要想对编译出的程序进行调试,就必须加入这个选项,加-g后输出程序变大。
未加入-g时,hello可执行文件的大小:
加入-g时的hello可执行文件的大小:
4.-O (大写) 对整个程序进行优化编译,链接使可执行的文件执行效率得到提高。
5.-O2 比-O更好的优化编译,过程不会比较慢。
6.-I +filepath :将filepath所指出的目录加到程序头文件目录列表中。
例: gcc -I/home/lm/inc hello.c -o hello (在/home/lm 目录下新建inc目录)
7.-L libpath: 将libpath所指出的目录加入到库文件的目录列表中。
8.-static : 静态链接库文件
库有静态与动态两种,动态通常用.so为后缀,静态用.a为后缀。动态链接要比静态链接节约内存空间。
例: gcc -static hello.c -o hello
9.-Wall 生成所有警告信息,-w 不生成警告信息
10.-D 相当于#define 例 gcc -DYES hello.c -o hello