跳转至

gcc


更新于 2023-11-24

官网
GCC在线文档

常用参数

编译参数

参数 说明 示例
-v 打印出编译器内部编译各过程的命令行信息和编译器的版本
-E 预编译/预处理
-S 只编译不汇编,生成汇编代码.S
-c 指编译不链接,生成目标文件.o
-o file 输出文件
-g 包含标准调试信息
-Idir dir目录搜索头文件
-Ldir dir目录搜索动态库
-static 链接静态库
-lname 链接动态库

告警参数

参数 说明 示例
-w 关闭所有警告
-Wall 允许发出gcc提供的所有有用的报警信息
-Werror 把所有的告警信息转化为错误信息,并在告警发生时终止编译过程

优化参数

参数 说明 示例
-o0 不优化
-o1
-o2
-o3

头文件

自定义头文件

Bash
1
2
3
#编译时指定头文件搜寻路径
gcc -I/path/to/header1 -I/path/to/header2
# -I/path 指定的路径将会在系统头文件路径前搜索

系统头文件

Bash
1
2
3
#系统头文件会在特定目录搜索
cpp -v /dev/null -o /dev/null
#查看系统头文件路径

详见此处

静态库

编译

Bash
1
ar -cr libxxx.a xxx.o

链接

通常.o文件链接时,是有顺序的。

Bash
1
2
# 循环搜索引用函数定义
-Wl,--start-group -lxxx -Wl,--end-group

注意

ar仅用于将.o文件打包成静态库
不能将静态库.o文件打包

动态库

编译

Bash
1
gcc -fPIC -shared xxx.c -o libxxx.so

链接

Bash
1
gcc main.c -L. -lxxx -o main  

依赖

Bash
1
2
#查看库依赖的库
ldd xxx.so