gcc支持编译的文件后缀及解释
后缀 | 文件类型 |
---|---|
.c | C 源程序;预处理,编译,汇编 |
.C | C++源程序;预处理,编译,汇编 |
.cc | C++源程序;预处理,编译,汇编 |
.cxx | C++源程序;预处理,编译,汇编 |
.m | Objective-C 源程序;预处理,编译,汇编 |
.i | 预处理后的 C 文件;编译,汇编 |
.ii | 预处理后的 C++文件;编译,汇编 |
.s | 汇编语言源程序;汇编 |
.S | 汇编语言源程序;预处理,汇编 |
.h | 预处理器文件;通常不出现在命令行上其他后缀名的文件被传递给连接器(linker).通常包括: |
.o | 目标文件(Object file) |
.a | 归档库文件(Archive file) |
gcc的基本用法
gcc [options] [filenames]
gcc编译流程
预处理 Pre-Processing
gcc -E hello.c -o hello.i
编译 Compiling
gcc -S hello.c -o hello.s
汇编 Assembling
gcc -c hello.c -o hello.o
链接 Linking
gcc hello.c -o hello.i
gcc编译选项分析
-
总体选项
-
-I dir 选项
在头文件搜索列表中添加dir目录。
Linux中默认的头文件都放在/usr/include目录下,当用户希望添加放置在其他位置的头文件时,就可以通过该选项来指定。
另外,在include语句中,< > 表示在标准路径中搜索头文件,“ ” 表示在本目录中搜索。 -
-L dir 选项
可以参考-I dir选项 -
告警
-w 关闭所有告警
-Wall允许发出gcc提供的所有有用的报警信息 -
优化
-O -O2 -O3
可以使用time观察优化前后程序运行时间
time ./a.out -
-llib
-lm 表示链接 libm.a库 -
-static
-so为动态链接库 .a 为静态链接库
当使用静态库时,链接器找出程序需要的函数,然后将他们拷贝到可执行文件,一旦链接成功,静态库就不需要了。动态库会在可执行程序内部留下一个标记,指明当程序执行时,必须先载入该库,linux下进行链接的缺省操作是链接动态库。 -
-DMICRO
等价于#define MICRO
来源:CSDN
作者:NjustMEMS_ZJ
链接:https://blog.csdn.net/u013098336/article/details/104155494