【问题标题】:duplicate symbol _MD5 in libcrypto and libGoogleAdMobAdslibcrypto 和 libGoogleAdMobAds 中的重复符号 _MD5
【发布时间】:2013-01-24 04:13:06
【问题描述】:

我的项目编译为armv7结构时出现这个错误:

duplicate symbol _MD5 in:
    /Users/User1/Documents/codes/ProgramList1/libraries/armv7/lib/libcrypto.a(md5_one.o)
    /Users/User1/Documents/codes/ProgramList1/ProgramList1/ADs/AdsMoGoLib/AdNetworkLibs/AdMob_SDK_621/libGoogleAdMobAds.a(GADGestureCFiles.o)
ld: 1 duplicate symbol for architecture armv7
clang: error: linker command failed with exit code 1 (use -v to see invocation)

我用谷歌搜索了这个问题,我读到有人建议将两个库合并为一个以消除重复的符号,如下所示:

> lipo libGoogleAdMobAds.a -thin armv7 -output libGoogleAdMobAds-armv7.a
> mkdir armv7
> cd armv7/
> ar -x ../libGoogleAdMobAds-armv7.a 
> ar -x ../libcrypto.a 
> libtool -static -o ../libcrypto-googlead-armv7.a *.o

最后,我回到项目,从链接标志中删除 libGoogleAdMobAds.a 和 libcrypto.a 并将新的组合库添加到项目中。

但我仍然遇到同样的错误:

duplicate symbol _MD5 in:
    /Users/User1/Documents/codes/ProgramList1/libraries/armv7/lib/libGoogleAdMobAds-armv7.a(md5_one.o)
    /Users/User1/Documents/codes/ProgramList1/ProgramList1/ADs/AdsMoGoLib/AdNetworkLibs/libGoogleAdMobAds-armv7.a(GADGestureCFiles.o)
ld: 1 duplicate symbol for architecture armv7
clang: error: linker command failed with exit code 1 (use -v to see invocation)

如您所见,同一个库中有重复的符号。我现在该怎么办?

【问题讨论】:

  • 您是否在项目/目标构建设置的其他链接器标志中设置了 all_load 标志?
  • 是的,我的其他链接器标志是这样的:-all_load -ObjC -lxml2 -levent -lssl -lcurl -l....
  • 顺便说一句,这个错误只在iOS(armv7)构建时出现,在模拟器(i386)构建时,项目构建成功。
  • 感谢 calvinBhai,从链接标志中删除 all_load 后,它现在可以工作了。我还发现了这个stackoverflow.com/a/12737840/739063
  • 查看我在答案中发布的链接。你会更好地理解为什么会出现这个问题。

标签: ios linker compiler-errors


【解决方案1】:

转发评论以获得答案

“您是否在项目/目标构建设置的其他链接器标志中设置了 all_load 标志?”

这里是关于 all_load 作用的非常详细的解释:

Why is -force_load no longer required for my three20 dependencies in XCode 4.2?

【讨论】:

    【解决方案2】:

    删除构建设置链接器标志中的-all_load

    删除是安全的,即使某些库要求您添加它。

    【讨论】:

      猜你喜欢
      • 2013-09-21
      • 1970-01-01
      • 1970-01-01
      • 2017-12-25
      • 2015-06-20
      • 2012-07-11
      • 2012-09-23
      • 1970-01-01
      相关资源
      最近更新 更多