

file 文件–查看文件,如果是可执行文件,则为ELF

普通文件为 ASCII text
gcc参数
参数 | 含义 | 示例 |
|---|---|---|
I | 包含头文件路径(绝对路径或相对路径) | gcc add.c -I ./include |
o | 目标文件 | gcc add.c -o pro.out |
D | 直接指定宏 | gcc add.c -D DEBUG |
L | 包含库路径 | gcc main.c -I include/ -L lib/ -lCalc |
l | 指定库名 | 库名:libxxx.so 使用方式:-lxxx |
c | .o文件(二进制文件) | 生成.o文件 |
g | 用于gdb调试 | |
Wall | 输出警告 | |
lstdc++ | 编译cpp文件 | gcc hello.cpp lstdc++ -o pro.out也可以g++ hello.cpp |
E | 预编译 | |
S | 汇编 |
**linux下 **
静态库.a 命名为:libxxx.a 对应于windows下的.lib
制作步骤:
1. 编译为.o文件
2. 将.o文件打包`ar rcs libmycalc.a file1.o file2.o`
3. 将头文件与库一起发布查看库文件信息nm libmycalc.a
动态库.so
制作步骤:
1. 编译与位置(存放位置)无关的代码,生成.o文件(就是加上`-fPIC`参数)gcc cal.c -I ./ -c -fPIC
1. 将.o文件打包,加参数-shared `gcc -shared -o libCalc.so file1.o file2.o`
1. 将库与头文件一起发布
ldd 程序查看所链接的库
动态库的使用
LD_LIBRARY_PATH 不推荐
export LD_LIBRARY_PATH=/home/lib/:$LD_LIBRARY_PATH一次设置,退出后就失效
最后的“:”后面表示不会清空之前的变量,而是增加
sudo ldconfig -v-v表示显示执行过程