我有两个静态库,它们似乎有重复的符号(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
这两个库的开发人员不提供源代码,因此我无法直接编辑代码来修复它。
我能做些什么来解决这个问题而不打扰图书馆开发人员吗?
第 1 部分——弄清楚这些符号是否代表同一对象。
注意:这是 OS X 特定的。
好吧,让我们看看如何查看它们的反汇编。
您也许可以使用otool
去做这个:
otool -v -t '/Users/Hoya/Desktop/SocialSync/Cauly/libCaulyDevice.a(TBXML.o)'
and
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 不在其中
如果它们不一样,那么就必须做更多的欺骗:)甚至可能不容易实现。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)