过程文件
| 后缀 | 含义 | 描述 |
|---|---|---|
| .c | 源文件 | 源代码 |
| .o | 源文件的目标文件 | 源代码预处理,编译和汇编后的二进制 |
| .a | 目标文件的归档文件 | 目标文件的打包,没有链接过程 |
| .so | 动态链接库文件 | 由目标文件或归档文件链接而成,没有程序入口,不能独立运行 |
| .out | 编译输出可执行文件 | 由目标文件或归档文件链接而成,有程序入口,可以独立运行 |
常用工具
| 工具 | 描述 |
|---|---|
| gcc | 通常用于完成预处理、编译、汇编、链接工作 (.c -> .o .so .out) |
| ar | 通常用于归档目标文件 (.o -> .a) |
常用方法
1.生成可执行文件
gcc -o app.out main.c
2.生成动态库文件
gcc -fPIC -shared -o libfunc.so func.c
3.生成目标文件
gcc -c fun1.c fun2.c
4.生成静态库文件
ar rcs fun.a fun1.o fun2.o
常用选项
| 参数 | 描述 |
|---|---|
| -I | 指明头文件的包含路径 |
| -L | 指明静态库的包含路径 |
| -l | 指明静态库的名字 |
| -Wl,-rpath= | 指明运行时可以找到动态链接库的路径 |
| -g | 编译时产生调试信息 |
| -Wall | 生成所有警告信息 |
| -On | n=0~3 优化级别,-O3最高 |
| -static | 禁止使用动态库 |
| -share | 尽量使用动态库 |
| -fPIC | 产生与位置无关的代码 |
| -c | 激活预处理,编译和汇编 |
| -o | 指定目标名称 |
来源:https://www.cnblogs.com/long-bky/p/12585606.html