对编译好的.o文件,可以合成一个.a文件,就是静态库,用ar命令:


ar rcs libMyLib.a  test1.o test2.o ... testN.o


查看.a包含哪些.o:

ar tv libMyLib.a


链接自己的.a文件时,可以不用-L 和-l命令,因为这2个命令有坑(依赖关系, 链接出现“未定义的引用”错误),可以直接在.o文件后面加上.a的文件路径和名称的:

g++ LINKFLAG  main.o  libMyLib.a  -o test.out


如果有多个项目用到了同一个静态库,并且用不同-D编译选择,那么用到的每类-D选项都要编译一个.a,不同的项目链接对应.a,这样才不会出错的。