gcc
更新于 2023-11-24
常用参数
编译参数
| 参数 | 说明 | 示例 |
|---|---|---|
| -v | 打印出编译器内部编译各过程的命令行信息和编译器的版本 | |
| -E | 预编译/预处理 | |
| -S | 只编译不汇编,生成汇编代码.S | |
| -c | 指编译不链接,生成目标文件.o | |
| -o file | 输出文件 | |
| -g | 包含标准调试信息 | |
| -Idir | dir目录搜索头文件 | |
| -Ldir | dir目录搜索动态库 | |
| -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