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 |
|---|
| #编译时指定头文件搜寻路径
gcc -I/path/to/header1 -I/path/to/header2
# -I/path 指定的路径将会在系统头文件路径前搜索
|
系统头文件
| Bash |
|---|
| #系统头文件会在特定目录搜索
cpp -v /dev/null -o /dev/null
#查看系统头文件路径
|
详见此处
静态库
编译
链接
通常.o文件链接时,是有顺序的。
| Bash |
|---|
| # 循环搜索引用函数定义
-Wl,--start-group -lxxx -Wl,--end-group
|
注意
ar仅用于将.o文件打包成静态库
不能将静态库和.o文件打包
动态库
编译
| Bash |
|---|
| gcc -fPIC -shared xxx.c -o libxxx.so
|
链接
| Bash |
|---|
| gcc main.c -L. -lxxx -o main
|
依赖