Xcode Mach-O链接器ID错误



我是xcode的新手,我正在尝试使用xcode学习C语言。当我尝试运行它时,我得到了一个错误applemach-o链接器和链接命令失败,退出代码为1。我不明白关于栈溢出的其他关于移除pod或库路径的答案。请帮助并告诉我修复此错误的每一步。{编辑}很抱歉提供的信息很少。这是代码和错误

The Code which was Simple

点击此处查看干扰的错误

Ld /Users/pratikkadam/Library/Developer/Xcode/DerivedData/Education-dhazvkwqsporefgyqgfaxhlzhscj/Build/Products/Debug/Education normal x86_64
cd /Users/pratikkadam/Documents/GitHub/Education
export MACOSX_DEPLOYMENT_TARGET=10.13
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -arch x86_64 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.13.sdk -L/Users/pratikkadam/Library/Developer/Xcode/DerivedData/Education-dhazvkwqsporefgyqgfaxhlzhscj/Build/Products/Debug -F/Users/pratikkadam/Library/Developer/Xcode/DerivedData/Education-dhazvkwqsporefgyqgfaxhlzhscj/Build/Products/Debug -filelist /Users/pratikkadam/Library/Developer/Xcode/DerivedData/Education-dhazvkwqsporefgyqgfaxhlzhscj/Build/Intermediates.noindex/Education.build/Debug/Education.build/Objects-normal/x86_64/Education.LinkFileList -Xlinker -rpath -Xlinker @executable_path/../Frameworks -Xlinker -rpath -Xlinker @loader_path/../Frameworks -mmacosx-version-min=10.13 -Xlinker -object_path_lto -Xlinker /Users/pratikkadam/Library/Developer/Xcode/DerivedData/Education-dhazvkwqsporefgyqgfaxhlzhscj/Build/Intermediates.noindex/Education.build/Debug/Education.build/Objects-normal/x86_64/Education_lto.o -Xlinker -export_dynamic -Xlinker -no_deduplicate -fobjc-link-runtime -L/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift_static/macosx -Xlinker -force_load_swift_libs -lc++ -framework Foundation -Xlinker -add_ast_path -Xlinker /Users/pratikkadam/Library/Developer/Xcode/DerivedData/Education-dhazvkwqsporefgyqgfaxhlzhscj/Build/Intermediates.noindex/Education.build/Debug/Education.build/Objects-normal/x86_64/Education.swiftmodule -Xlinker -dependency_info -Xlinker /Users/pratikkadam/Library/Developer/Xcode/DerivedData/Education-dhazvkwqsporefgyqgfaxhlzhscj/Build/Intermediates.noindex/Education.build/Debug/Education.build/Objects-normal/x86_64/Education_dependency_info.dat -o /Users/pratikkadam/Library/Developer/Xcode/DerivedData/Education-dhazvkwqsporefgyqgfaxhlzhscj/Build/Products/Debug/Education
duplicate symbol _main in:
/Users/pratikkadam/Library/Developer/Xcode/DerivedData/Education-dhazvkwqsporefgyqgfaxhlzhscj/Build/Intermediates.noindex/Education.build/Debug/Education.build/Objects-normal/x86_64/Example.o
/Users/pratikkadam/Library/Developer/Xcode/DerivedData/Education-dhazvkwqsporefgyqgfaxhlzhscj/Build/Intermediates.noindex/Education.build/Debug/Education.build/Objects-normal/x86_64/main.o
ld: 1 duplicate symbol for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

C语言命令行项目的XCode标准模板包含main.c,其中包含示例实现:

#include <stdio.h>
int main(int argc, const char * argv[]) {
// insert code here...
printf("Hello, World!n");
return 0;
}

您还没有向我们展示您的项目文件结构,但我认为您没有从项目中删除main.c。您的屏幕截图显示您创建的Example.c也包含main()函数定义。在C语言中,所有函数都在同一个平面全局级别上(没有命名空间和类(,因此linker(制作可执行文件的最后阶段(抱怨重复的_main符号。要解决这个问题,您应该:

  1. 将主函数中的测试代码从Example.c移动到main.c。无论如何都要去掉Example.c
  2. Example.c中的函数重命名为main()之外的其他东西,并在main.c中的int main(int argc, const char * argv[])内部调用它

最新更新