Skip to content

gcc ​


更新于 2023-11-24

官网
GCC在线文档

常用参数 ​

编译参数 ​

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

告警参数 ​

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

优化参数 ​

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

头文件 ​

自定义头文件 ​

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

系统头文件 ​

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

详见此处

静态库 ​

编译 ​

shell
ar -cr libxxx.a xxx.o

链接 ​

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

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

注意 ​

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

动态库 ​

编译 ​

shell
gcc -fPIC -shared xxx.c -o libxxx.so

链接 ​

shell
gcc main.c -L. -lxxx -o main

依赖 ​

shell
#查看库依赖的库
ldd xxx.so