如何修复 Apple Mach-O 链接器错误?
How do I fix Apple Mach-O Liker Error?
每次我 运行 我的代码超过 3 个场景时,我总是收到 Apple Mach-O 链接器错误。我对此进行了搜索,并尝试按照几乎所有人所说的进行操作:
产品 > 清洁
产品 > 清理构建文件夹
删除派生数据
但其中 none 似乎适用于我的情况。再次构建时仍然出现错误。
这是完整的错误:
Ld /Users/rohankalantri/Library/Developer/Xcode/DerivedData/FinalTest(1)-actqlzklrbebyyfwvakdqnhcnozz/Build/Products/Debug-iphonesimulator/FinalTest(1).app/FinalTest(1) normal x86_64
cd "/Volumes/MacData/xCode/FinalTest(1)/FinalTest(1)"
export IPHONEOS_DEPLOYMENT_TARGET=8.1
export PATH="/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin:/Applications/Xcode.app/Contents/Developer/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin"
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -arch x86_64 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator8.1.sdk -L/Users/rohankalantri/Library/Developer/Xcode/DerivedData/FinalTest(1)-actqlzklrbebyyfwvakdqnhcnozz/Build/Products/Debug-iphonesimulator -F/Users/rohankalantri/Library/Developer/Xcode/DerivedData/FinalTest(1)-actqlzklrbebyyfwvakdqnhcnozz/Build/Products/Debug-iphonesimulator -filelist /Users/rohankalantri/Library/Developer/Xcode/DerivedData/FinalTest(1)-actqlzklrbebyyfwvakdqnhcnozz/Build/Intermediates/FinalTest(1).build/Debug-iphonesimulator/FinalTest(1).build/Objects-normal/x86_64/FinalTest(1).LinkFileList -Xlinker -rpath -Xlinker @executable_path/Frameworks -Xlinker -objc_abi_version -Xlinker 2 -fobjc-arc -fobjc-link-runtime -Xlinker -no_implicit_dylibs -mios-simulator-version-min=8.1 -Xlinker -dependency_info -Xlinker /Users/rohankalantri/Library/Developer/Xcode/DerivedData/FinalTest(1)-actqlzklrbebyyfwvakdqnhcnozz/Build/Intermediates/FinalTest(1).build/Debug-iphonesimulator/FinalTest(1).build/Objects-normal/x86_64/FinalTest(1)_dependency_info.dat -o /Users/rohankalantri/Library/Developer/Xcode/DerivedData/FinalTest(1)-actqlzklrbebyyfwvakdqnhcnozz/Build/Products/Debug-iphonesimulator/FinalTest(1).app/FinalTest(1)
duplicate symbol _level in:
/Users/rohankalantri/Library/Developer/Xcode/DerivedData/FinalTest(1)-actqlzklrbebyyfwvakdqnhcnozz/Build/Intermediates/FinalTest(1).build/Debug-iphonesimulator/FinalTest(1).build/Objects-normal/x86_64/easyLevel.o
/Users/rohankalantri/Library/Developer/Xcode/DerivedData/FinalTest(1)-actqlzklrbebyyfwvakdqnhcnozz/Build/Intermediates/FinalTest(1).build/Debug-iphonesimulator/FinalTest(1).build/Objects-normal/x86_64/mediumLevel.o
duplicate symbol _durationTime in:
/Users/rohankalantri/Library/Developer/Xcode/DerivedData/FinalTest(1)-actqlzklrbebyyfwvakdqnhcnozz/Build/Intermediates/FinalTest(1).build/Debug-iphonesimulator/FinalTest(1).build/Objects-normal/x86_64/easyLevel.o
/Users/rohankalantri/Library/Developer/Xcode/DerivedData/FinalTest(1)-actqlzklrbebyyfwvakdqnhcnozz/Build/Intermediates/FinalTest(1).build/Debug-iphonesimulator/FinalTest(1).build/Objects-normal/x86_64/mediumLevel.o
duplicate symbol _delayTime in:
/Users/rohankalantri/Library/Developer/Xcode/DerivedData/FinalTest(1)-actqlzklrbebyyfwvakdqnhcnozz/Build/Intermediates/FinalTest(1).build/Debug-iphonesimulator/FinalTest(1).build/Objects-normal/x86_64/easyLevel.o
/Users/rohankalantri/Library/Developer/Xcode/DerivedData/FinalTest(1)-actqlzklrbebyyfwvakdqnhcnozz/Build/Intermediates/FinalTest(1).build/Debug-iphonesimulator/FinalTest(1).build/Objects-normal/x86_64/mediumLevel.o
duplicate symbol _firstTime in:
/Users/rohankalantri/Library/Developer/Xcode/DerivedData/FinalTest(1)-actqlzklrbebyyfwvakdqnhcnozz/Build/Intermediates/FinalTest(1).build/Debug-iphonesimulator/FinalTest(1).build/Objects-normal/x86_64/easyLevel.o
/Users/rohankalantri/Library/Developer/Xcode/DerivedData/FinalTest(1)-actqlzklrbebyyfwvakdqnhcnozz/Build/Intermediates/FinalTest(1).build/Debug-iphonesimulator/FinalTest(1).build/Objects-normal/x86_64/mediumLevel.o
ld: 4 duplicate symbols for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
我也明白了:
ld: 4 个重复的架构符号 x86_64
我做错了什么吗?我该如何解决这个问题?
PS:我正在使用 Xcode 6 版本 6.1.1 (6A2008a) 和 Objective C。
您有 easyLevel
和 mediumLevel
的 class 个文件吗?它们似乎被多次编译,这导致了 duplicate symbol
.
的错误
您可以在“项目设置”(文件列表中的顶部条目,以您的项目命名)> Select 左侧列表中的“目标”> 顶部的选项卡栏中查看 select “构建阶段” > “编译源代码”。然后确保每个文件源文件只存在一次。
您可以在 Apple’s documentation “Controlling How an Individual File Is Compiled”
中的屏幕截图中看到这一点
通常当我遇到这种情况时,我发现我导入的是 .m 文件而不是 .h 文件。
听起来有点像在头文件中声明非静态全局变量并导入到 easyLevel 和 mediumLevel。
每次我 运行 我的代码超过 3 个场景时,我总是收到 Apple Mach-O 链接器错误。我对此进行了搜索,并尝试按照几乎所有人所说的进行操作:
产品 > 清洁
产品 > 清理构建文件夹
删除派生数据
但其中 none 似乎适用于我的情况。再次构建时仍然出现错误。
这是完整的错误:
Ld /Users/rohankalantri/Library/Developer/Xcode/DerivedData/FinalTest(1)-actqlzklrbebyyfwvakdqnhcnozz/Build/Products/Debug-iphonesimulator/FinalTest(1).app/FinalTest(1) normal x86_64
cd "/Volumes/MacData/xCode/FinalTest(1)/FinalTest(1)"
export IPHONEOS_DEPLOYMENT_TARGET=8.1
export PATH="/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin:/Applications/Xcode.app/Contents/Developer/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin"
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -arch x86_64 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator8.1.sdk -L/Users/rohankalantri/Library/Developer/Xcode/DerivedData/FinalTest(1)-actqlzklrbebyyfwvakdqnhcnozz/Build/Products/Debug-iphonesimulator -F/Users/rohankalantri/Library/Developer/Xcode/DerivedData/FinalTest(1)-actqlzklrbebyyfwvakdqnhcnozz/Build/Products/Debug-iphonesimulator -filelist /Users/rohankalantri/Library/Developer/Xcode/DerivedData/FinalTest(1)-actqlzklrbebyyfwvakdqnhcnozz/Build/Intermediates/FinalTest(1).build/Debug-iphonesimulator/FinalTest(1).build/Objects-normal/x86_64/FinalTest(1).LinkFileList -Xlinker -rpath -Xlinker @executable_path/Frameworks -Xlinker -objc_abi_version -Xlinker 2 -fobjc-arc -fobjc-link-runtime -Xlinker -no_implicit_dylibs -mios-simulator-version-min=8.1 -Xlinker -dependency_info -Xlinker /Users/rohankalantri/Library/Developer/Xcode/DerivedData/FinalTest(1)-actqlzklrbebyyfwvakdqnhcnozz/Build/Intermediates/FinalTest(1).build/Debug-iphonesimulator/FinalTest(1).build/Objects-normal/x86_64/FinalTest(1)_dependency_info.dat -o /Users/rohankalantri/Library/Developer/Xcode/DerivedData/FinalTest(1)-actqlzklrbebyyfwvakdqnhcnozz/Build/Products/Debug-iphonesimulator/FinalTest(1).app/FinalTest(1)
duplicate symbol _level in:
/Users/rohankalantri/Library/Developer/Xcode/DerivedData/FinalTest(1)-actqlzklrbebyyfwvakdqnhcnozz/Build/Intermediates/FinalTest(1).build/Debug-iphonesimulator/FinalTest(1).build/Objects-normal/x86_64/easyLevel.o
/Users/rohankalantri/Library/Developer/Xcode/DerivedData/FinalTest(1)-actqlzklrbebyyfwvakdqnhcnozz/Build/Intermediates/FinalTest(1).build/Debug-iphonesimulator/FinalTest(1).build/Objects-normal/x86_64/mediumLevel.o
duplicate symbol _durationTime in:
/Users/rohankalantri/Library/Developer/Xcode/DerivedData/FinalTest(1)-actqlzklrbebyyfwvakdqnhcnozz/Build/Intermediates/FinalTest(1).build/Debug-iphonesimulator/FinalTest(1).build/Objects-normal/x86_64/easyLevel.o
/Users/rohankalantri/Library/Developer/Xcode/DerivedData/FinalTest(1)-actqlzklrbebyyfwvakdqnhcnozz/Build/Intermediates/FinalTest(1).build/Debug-iphonesimulator/FinalTest(1).build/Objects-normal/x86_64/mediumLevel.o
duplicate symbol _delayTime in:
/Users/rohankalantri/Library/Developer/Xcode/DerivedData/FinalTest(1)-actqlzklrbebyyfwvakdqnhcnozz/Build/Intermediates/FinalTest(1).build/Debug-iphonesimulator/FinalTest(1).build/Objects-normal/x86_64/easyLevel.o
/Users/rohankalantri/Library/Developer/Xcode/DerivedData/FinalTest(1)-actqlzklrbebyyfwvakdqnhcnozz/Build/Intermediates/FinalTest(1).build/Debug-iphonesimulator/FinalTest(1).build/Objects-normal/x86_64/mediumLevel.o
duplicate symbol _firstTime in:
/Users/rohankalantri/Library/Developer/Xcode/DerivedData/FinalTest(1)-actqlzklrbebyyfwvakdqnhcnozz/Build/Intermediates/FinalTest(1).build/Debug-iphonesimulator/FinalTest(1).build/Objects-normal/x86_64/easyLevel.o
/Users/rohankalantri/Library/Developer/Xcode/DerivedData/FinalTest(1)-actqlzklrbebyyfwvakdqnhcnozz/Build/Intermediates/FinalTest(1).build/Debug-iphonesimulator/FinalTest(1).build/Objects-normal/x86_64/mediumLevel.o
ld: 4 duplicate symbols for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
我也明白了:
ld: 4 个重复的架构符号 x86_64
我做错了什么吗?我该如何解决这个问题?
PS:我正在使用 Xcode 6 版本 6.1.1 (6A2008a) 和 Objective C。
您有 easyLevel
和 mediumLevel
的 class 个文件吗?它们似乎被多次编译,这导致了 duplicate symbol
.
您可以在“项目设置”(文件列表中的顶部条目,以您的项目命名)> Select 左侧列表中的“目标”> 顶部的选项卡栏中查看 select “构建阶段” > “编译源代码”。然后确保每个文件源文件只存在一次。
您可以在 Apple’s documentation “Controlling How an Individual File Is Compiled”
中的屏幕截图中看到这一点通常当我遇到这种情况时,我发现我导入的是 .m 文件而不是 .h 文件。
听起来有点像在头文件中声明非静态全局变量并导入到 easyLevel 和 mediumLevel。