编译静态库
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
网友评论