linux动态库静态库的制作
//linux静态库的制作
1.命名规则:libxxx.a
2..c文件生成.o文件
gcc -c *.c
3.将.o文件打包为.a文件
ar rcs libtest.a *.o
nm libtest.a //查看静态库包函的.o文件
4.使用静态库
测试main函数包函head.h头文件
然后编译
gcc main.c -I ./Include -L ./lib -l test -o main
//linux动态库的制作
1.命名规则:libxxx.so
2..c文件生成.o文件
gcc -I ../Include/ -c -fpic *.c //-fpic==-fPIC
3.将.o文件打包为.so文件
gcc -shared -o libtest.so *.o
4.使用动态库
a.用头文件和库文件将main.c生成可执行文件
gcc main.c -I ./Include/ -L ./libs/ -l test -o main
b.解决找不到动态库问题
ldd appNmae //查看需要的库
动态库搜索顺序
a.DT_RPATH elf文件内部字段
b.LD_LIBRARY_PATH 动态库环境变量
c./etc/ld.so.cache 文件列表
d./lib/,/usr/lib/ 库目录
1.把动态库扔lib里面,或扔到/usr/lib里面(有可能覆盖系统库,别用)
2.临时修改LD_LIBRARY_PATH(关掉终端即失效)
export LD_LIBRARY_PATH=./lib/
export LD_LIBRARY_PATH=./lib/:$LD_LIBRARY_PATH //追加
3.修改环境变量文件(长久有效)
a.用户级别配置
配置文件位置:家目录下面 .bashrc
追加文尾 export LD_LIBRARY_PATH=/home/xingxing/lib
//等号左右不要空格
source .bashrc //重新加载.bashrc文件
. .bashrc //可以用.代替source
b.系统级别配置
/etc/profile
export LD_LIBRARY_PATH=/home/xingxing/lib
source .bashrc
4.修改/etc/ld.so.conf(长久有效)
add a line : /home/xingxing/lib
sudo ldconfig -v 更新文件列表
5.创建软连接
sudo ln -s /usr/lib64/libxxx.so /usr/lib/libxxx.so
浙公网安备 33010602011771号