我有两个静态库,似乎有重复的符号(TBXML.o),不会编译。
ld: duplicate symbol _OBJC_METACLASS_$_TBXML in /Users/Hoya/Desktop/SocialSync/include/SMUFLib/deviceLib/libSFCommonLibs.a(TBXML.o) and /Users/Hoya/Desktop/SocialSync/Cauly/libCaulyDevice.a(TBXML.o) for architecture armv6
Command /Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/clang failed with exit code 1
两个库的开发人员都没有提供源代码,所以我无法直接编辑代码来修复它。
在没有唠叨图书馆开发人员的情况下,我能做些什么来解决这个问题吗?
答案 0 :(得分:4)
好的,让我们来看看如何查看他们的反汇编。
您可以使用otool
执行此操作:
otool -v -t '/Users/Hoya/Desktop/SocialSync/Cauly/libCaulyDevice.a(TBXML.o)'
和
otool -v -t '/Users/Hoya/Desktop/SocialSync/include/SMUFLib/deviceLib/libSFCommonLibs.a(TBXML.o)'
检查反汇编是否相同,如果是,那么你很幸运:-)
如果上述命令的foo.a(bar.o)格式不起作用(无论出于何种原因),你可以通过从两者中删除(TBXML.o)来尝试它但是你有做更多的工作。
如果它们相同,那么您可以轻松地使用otool + lipo重建两个.a文件中的一个,以便TBXML.o不在其中
如果它们不相同,那么必须要做更多的诡计:)甚至可能不容易。