解决静态库冲突问题

2019-04-11  本文已影响0人  CCCRick

问题

集成项目SDK的时候用到公司的两个静态库,在没有添加other link flags -ObjC之前,编译运行一切正常。一旦加上这个配置项后就报duplicate symbol错误,在错误描述中可以看到两个静态库都包含来命名相同都.o文件。

解决方案

  1. 首先根据错误信息是arm64的库冲突,所以解压出arm64库
1. lipo liba.a -thin arm64 -output liba-arm64.a #其中liba-arm64.a为抽离出来的库文件
2. 创建一个新文件夹A,进入该文件夹下面
3. ar -x liba-arm64.a完整路径
4. 现在A文件夹中就有抽离出来的一堆.o文件来 
  1. 在抽离后的文件夹中找到造成冲突的文件并删除
  2. 删除后重新打包库libtool -static -o 新的库文件路径/libarm64.a *.o(该命令需要在A文件夹中进行)
  3. 抽离出其它库文件(例如有armv7.a),然后合并静态库lipo -creata -output liba.a armv7.a libarm64.a
  4. 用新合成的库替换原先的库
上一篇 下一篇

猜你喜欢

热点阅读