1.问题背景
联合开发中,由于软件保密,合作方仅提供.a静态库。但可能出现合作方提供的.a静态库和自身的.a静态库冲突,导致镜像合成失败,且可能因为合作方的各种缘故不方便修改静态库。
2.问题描述
程序编译过程中没有出错,但是在ld链接过程中提示错误:multiple definition of。
3.问题分析
1 对于在程序中可以修改的重复定义,直接修改程序即可。
2 multiple definition of的函数都在保密的.a库文件中,重复函数众多,且无法轻易更改程序。由于.a静态文件是由.o可执行文件打包而来,可以先对.a静态库解包,删除掉重复定义的.o可执行文件后重新打包即可。
4.解决方法
1 拆包.a静态库。
ar -x libtarget.a
2 删除多余的.o文件。
3 重新打包静态库。
ar crv libtarget.a *.o
4 重新编译。
原贴链接:https://bbs.aw-ol.com/topic/742
全志在线开发者交流企鹅群(客服机器人24小时在线解答):498263967
资源获取、问题讨论可以到全志在线开发者社区进行:https://www.aw-ol.com/
全志及开发者最新动态可以关注全志在线微信公众号