duplicate symbols for architecture arm64 .a静态库冲突


armv7为例:


第一步:查看报信息

lipo -info libx.a

例如 输出结果:

Architectures in the fat file: libGeTuiSdk-1.4.3-noidfa.a are: armv7 i386 x86_64 arm64

如果提示fat file,那么代表这个包是支持多平台的,例如armv7,armv7s,i386等,这需要我们逐一做解包重打包操作。

第二步:创建文件夹

由于到合并多个包,所以需要先分好类后,再进行此操作

mkdir armv7

第三步:提取armv7平台的包

在第一步中,可以看到支持的各个平台。

lipo libx.a -thin armv7 -output armv7/libgt-armv7.a

注:这里armv7,可以换成i386、x86_64等,主要是看你的库文件支持的平台,arm64如果不成功的话可以采用 lipo -thin arm64 /Users/xxx/Desktop/libLechangeSDK.a -output /Users/xxx/Desktop/libLechangeSDK_arm64.a 

第四步:解压.a文件

可以使用命令先进行查看.a包中的文件列表

ar -t armv7/libgt-armv7.a

解压.a包(内部都是.o文件)

cd armv7

ar xv libgt-armv7.a

第五步:删除冲突文件

针对minizip来说,我在个推包中,删除如下几个文件(可以手动在文件夹里删除)

rm zip.o

rm unzip.o

第六步:重新打包

删除后,重新把.o文件,打成.a包。(把里面原来的.a文件删除)

cd ..

ar rcs libWintonePlateIDPro-armv7.a armv7/*.o

第七步:将其他几个平台(armv7s, arm64,i386)包逐一做上述操作。

最后合并:重新合并.a文件:lipo -create libWintonePlateIDPro-armv7.a libWintonePlateIDPro-armv7s.a -output libWintonePlateIDPro-new.a

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容