1.问题背景 联合开发中,由于软件保密,合作方仅提供.a静态库。但可能出现合作方提供的.a静态库和自身的.a静态库冲突,导致镜像合成失败,且可能因为合作方的各种缘故不方便修改静态库。
2.问题描述 程序编译过程中没有出错,但是在ld链接过程中提示错误:multiple definition of。
3.问题分析 1 对于在程序中可以修改的重复定义,直接修改程序即可。 2 multiple definition of的函数都在保密的.a库文件中,重复函数众多,且无法轻易更改程序。由于.a静态文件是由.o可执行文件打包而来,可以先对.a静态库解包,删除掉重复定义的.o可执行文件后重新打包即可。
4.解决方法 1 拆包.a静态库。
代码语言:javascript复制ar -x libtarget.a
2 删除多余的.o文件。 3 重新打包静态库。
代码语言:javascript复制ar crv libtarget.a *.o
4 重新编译。
原贴链接:https://bbs.aw-ol.com/topic/742