过程文件
后缀 | 含义 | 描述 |
---|---|---|
.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