lipo (dumplicate symbols for architecture XXXX)
来源:互联网 发布:赵薇披日本国旗 知乎 编辑:程序博客网 时间:2024/06/08 14:28
最近遇到一个诡异的问题,项目中添加了第三方公司提供的静态库A,A又使用了第三方开源静态库B,而我们的项目中也使用了开源库B,结果编译的时候报了个如下的错误:
ld: 198 duplicate symbols for architecture x86_64clang: error: linker command failed with exit code 1 (use -v to see invocation)
自己写了个模拟demo测试了一下,发现没有问题,问题估计是出在这个静态库A的制作上了,除了让他们重新制作一个库,看看能不能从现有的A库上做手脚(静态库A的名字libA.a),操作步骤如下:
1、首先看看这个库所支持的格式:
$ lipo -info libA.a
输出形如:
Architectures in the fat file: libA.a are: armv7 i386 x86_64 arm64
由此可见,该库支持很多嘛,先拿模拟器的开刀,其它一样
2、提取出i386的:
$ lipo -extract_family armv7 -output i386.a libA.a
提取出的文件叫 i386.a
3、看一看提取出的是不是正确的:
$ lipo -info i386.a输出如下,才是正确的:
input file i386.a is not a fat fileNon-fat file: i386.a is architecture: i386
注意第一句,必须是 not a fat file,这个是成功的前提。
4、解出里面的.o文件,可能文件很多,那我们就先在当前目录创建一个文件夹,存储这些.o文件吧
$ mkdir files$ cd files5、开始解
$ ar -x ../i386.a
6、此时你会看到好多.o文件
7、删除错误信息里提示的那些形如下面的错误信息
duplicate symbol _OBJC_IVAR_$_<span style="color:#ff0000;">DumplicateFile</span>._window in: /filePath/x86_64/<span style="color:#ff0000;">DumplicateFile.o</span> /filePath/ProjectName/libA.a(<span style="color:#ff6600;">DumplicateFile.o</span>)
$ rm -rf DumplicateFile.o
8、该删除的已经删除了,再将库压缩回去,新的i386库叫i386_new.a
$ libtool -static -o ../i386_new.a *.o
9、OK,新的针对i386的库就这样折腾好了,拿去测试一下咯。
10、其它的几个操作步骤一样。
11、合并成一个通用的静态库
$ lipo -create -output newUniversal.a i386_new.a x86_64_new.a armv7_new.a
12、拿这个新的库 newUniversal.a库去看看咯
备注:
合并库,可以只参考最后一步,或者 你也可以将所有的库都合并到一起,你将.o文件塞到一个里面去。。。然后从第八步执行下去。合并的时候,你要注意:
1、必须是同一个architecture;
2、被替换的.o文件是相同的,包括里面的实现机制(不一样,被替换了,谁知道会出什么问题)
0 0
- lipo (dumplicate symbols for architecture XXXX)
- Undefined symbols for architecture
- Undefined symbols for architecture
- Undefined symbols for architecture
- Undefined symbols for architecture armv7:
- Undefined symbols for architecture armv7:
- Undefined symbols for architecture i386
- duplicate symbols for architecture armv6
- 解决 Undefined symbols for architecture
- Undefined symbols for architecture armv7
- Undefined symbols for architecture i386:
- Undefined symbols for architecture armv7:
- Undefined symbols for architecture i386
- Undefined symbols for architecture i386 ...
- Undefined symbols for architecture i386
- Undefined symbols for architecture armv7s
- Undefined symbols for architecture armv7
- Undefined symbols for architecture i386:
- 第二大整数
- STL——list、stack、queue
- Lq_特殊回文数
- 从DWG导入SKP的准备工作
- Test For OneNote
- lipo (dumplicate symbols for architecture XXXX)
- 社説 20150314 北陸新幹線開業 効果持続へ地域の魅力高めよ
- RabbitMQ技术详解
- PHP学习笔记(四)字符串操作
- LeetCode 002 Add Two Numbers
- 社説 20150314 与党安保協議 機動的な対処が可能な法制に
- 从DWG导入SKP后的封面问题
- 社説 20150315 コンビニ再編 業態超えた成長戦略が重要だ
- Java配置环境变量