【问题标题】:Git pulls cause duplicate symbol _OBJC_CLASS_ all the time?Git 一直拉导致重复符号_OBJC_CLASS_?
【发布时间】:2013-02-23 22:57:55
【问题描述】:

在开发 iOS 应用程序时,我们不断遇到同样的问题 - 在一些 git pull / merge of changes 之后,我们得到了

duplicate symbol _OBJC_CLASS_

链接器错误

针对不同的班级。如果从“目标/构建阶段中的编译源选项卡”中删除源文件(如果它是重复符号 _OBJC_METACLASS_$_User 则为 User.m),则可以删除此错误。..

完整的错误如下所示:

duplicate symbol _OBJC_CLASS_$_GridView in:
    /Users/user/Library/Developer/Xcode/DerivedData/App-bjpymtdfvzxkembjocjjpbswfoul/Build/Intermediates/App.build/Debug-iphoneos/App.build/Objects-normal/armv7/GridView-9FDDD336172B4A48.o
duplicate symbol _OBJC_METACLASS_$_GridView in:
    /Users/user/Library/Developer/Xcode/DerivedData/App-bjpymtdfvzxkembjocjjpbswfoul/Build/Intermediates/App.build/Debug-iphoneos/App.build/Objects-normal/armv7/GridView-9FDDD336172B4A48.o
duplicate symbol _OBJC_METACLASS_$_User in:
    /Users/user/Library/Developer/Xcode/DerivedData/App-bjpymtdfvzxkembjocjjpbswfoul/Build/Intermediates/App.build/Debug-iphoneos/App.build/Objects-normal/armv7/User.o
    /Users/user/Library/Developer/Xcode/DerivedData/App-bjpymtdfvzxkembjocjjpbswfoul/Build/Products/Debug-iphoneos/libRestKit.a(User.o)
duplicate symbol _OBJC_CLASS_$_User in:
    /Users/user/Library/Developer/Xcode/DerivedData/App-bjpymtdfvzxkembjocjjpbswfoul/Build/Intermediates/App.build/Debug-iphoneos/App.build/Objects-normal/armv7/User.o
    /Users/user/Library/Developer/Xcode/DerivedData/App-bjpymtdfvzxkembjocjjpbswfoul/Build/Products/Debug-iphoneos/libRestKit.a(User.o)
ld: 4 duplicate symbols for architecture armv7
clang: error: linker command failed with exit code 1 (use -v to see invocation)

【问题讨论】:

    标签: ios objective-c linker clang


    【解决方案1】:

    这里有一些事情可以尝试:

    1. 检查您的项目,看看您是否从两个不同的位置导入了相同的文件。查看您的项目|目标 |构建阶段(选项卡)|再次编译源 部分并确保文件(GridView.m 和 User.m)不会出现两次。该列表按添加日期而不是文件名对文件进行排序,因此您可能错过了它。

    2. 此外,您似乎正在静态链接外部库 libRestKit.a。您或您团队中的其他人是否正在导入 RESTKit 的源代码以及静态库?如果两者都有,则会得到重复的符号。

    3. 1234563能够通过删除有问题的源文件来解决问题。

    在每个人都拥有相同的构建配置之前,您将继续遇到这些问题,因此您应该让每个人都提交并签入他们的所有代码。修复任何合并冲突,让您的本地存储库完全符合您系统上的要求,然后推送。然后,让团队的其他成员删除他们的存储库并进行新的克隆。希望每个人都从同一个代码库/项目开始,这样可以避免问题再次发生,甚至可以指出问题发生的位置,以便您将来避免它。

    最好的问候。

    【讨论】:

    • 合并后在构建阶段有相同的文件:/
    猜你喜欢
    • 2012-11-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-13
    • 2018-03-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多