请稍侯

静态库合并

2013年 08月30日
更多

在移植rdk4.0调试过程中,需将其.a文件全部找包成一个.a文件,以便编译上层应用程序,但是过程中遇到了一些问题:

1,rdk4.0的代码文件层次很多,无法很方便找到所有的.a文件
2,如何将.a文件不以编译成so文件的方式编译上层应用程序
3,对于多个.a文件如何进行重新编译成一个总的.a文件

对的linux下的静态库,.a文件,可以看成是.o的一个压缩包,对其不想用so编译上层程序,其实可以直接将其在编译应用程序时全部包含,但是在实际过程中该方法没有行的通,遇到很多问题(还待以后研究).所以只好将用到的.a重装压缩成一个总的.a文件了.

对于这些问题都不太好弄.第一个问题是在,makefile里找到原用于编译上层应用程序的so文件,看其将哪些.a文件编译成了.a,最终是让其在编译过程打印出来,并将这些.a文件全部放在一个文件夹下.

这些.a文件要编译成一个新的.a文件,只能先将他们全部解压成.o文件了,解压命令是ar -x file,这里的file只能单个文件,不然会报错的.

这里,解压过程中,如何遇到相同名称的.o文件时,需将其改下名字,不然会出现冲突.

再用ar -rc ./*将出现的所有.o文件打包成.a文件就可以了