linux编译和使用静态库动态库

2022-10-18  本文已影响0人  江河湖海洋

编译静态库
gcc -c test.c -o test.o
ar rcs -o libtest.a test.of
//用ar libtest.a查看libtest.a包含哪些文件

生成动态库
gcc -c test.o -fPIC test.c
gcc -shared -fPIC -o libmyshared.so test.c

//同时链接静态库和动态库
g++ cpp文件 -I目录 -Wl,-Bstatic -l静态库名 -Wl,-Bstatic -l静态库名 -Wl,-Bdynamic -Wl,--as-needed

动态静态混用

-Wl, -Bstatic -l -Wl,-Bdynamic

只用静态

-static -l

linux 将多个静态库合并成一个静态库
方法一

应用方式,不是硬编码进去的

ar crsT libAll.a libA.a libB.a
方法二
ar x libA.a
ar x libB.a
ar crs libAll.a *.o
ranlib libAll.a
方法三
新建libTmp.mri,文件内容
create libAll.a
addlib libA.a
addlib libB.a
addlib libC.a
save
end
命令行执行: ar -M << libTmp.mri

cmake不能直接把多个静态库合成一个静态库,要么在命令行将多个静态库合成合成
方法一
ar crsT libAll.a libA.a libB.a
方法二
ar x libA.a
ar x libB.a
ar crs libAll.a *.o
ranlib libAll.a
要么通过cmake间接合成,先生成一个本项目的静态库libA.a(不包含其他库)
再生成可执行文件时将libA.a和其他静态库合成 libMerege.a

上一篇 下一篇

猜你喜欢

热点阅读