我刚开始学习C,写了我的hello world程序:
#include <stdio.h>
main()
{
printf("Hello World");
return 0;
}
当我运行代码时,我得到一个很长的错误:
Apple Mach-O Linker (id) Error
Ld /Users/Solomon/Library/Developer/Xcode/DerivedData/CProj-cwosspupvengheeaapmkrhxbxjvk/Build/Products/Debug/CProj normal x86_64
cd /Users/Solomon/Desktop/C/CProj
setenv MACOSX_DEPLOYMENT_TARGET 10.7
/Developer/usr/bin/clang -arch x86_64 -isysroot /Developer/SDKs/MacOSX10.7.sdk -L/Users/Solomon/Library/Developer/Xcode/DerivedData/CProj-cwosspupvengheeaapmkrhxbxjvk/Build/Products/Debug -F/Users/Solomon/Library/Developer/Xcode/DerivedData/CProj-cwosspupvengheeaapmkrhxbxjvk/Build/Products/Debug -filelist /Users/Solomon/Library/Developer/Xcode/DerivedData/CProj-cwosspupvengheeaapmkrhxbxjvk/Build/Intermediates/CProj.build/Debug/CProj.build/Objects-normal/x86_64/CProj.LinkFileList -mmacosx-version-min=10.7 -o /Users/Solomon/Library/Developer/Xcode/DerivedData/CProj-cwosspupvengheeaapmkrhxbxjvk/Build/Products/Debug/CProj
ld: duplicate symbol _main in /Users/Solomon/Library/Developer/Xcode/DerivedData/CProj-cwosspupvengheeaapmkrhxbxjvk/Build/Intermediates/CProj.build/Debug/CProj.build/Objects-normal/x86_64/helloworld.o and /Users/Solomon/Library/Developer/Xcode/DerivedData/CProj-cwosspupvengheeaapmkrhxbxjvk/Build/Intermediates/CProj.build/Debug/CProj.build/Objects-normal/x86_64/main.o for architecture x86_64
Command /Developer/usr/bin/clang failed with exit code 1
我正在运行xCode
我应该重新安装DevTools吗?
答案 0 :(得分:5)
你试过吗
int main()
甚至是int main(int argc, char**argv)
?
答案 1 :(得分:2)
错误消息表示符号_main
(引用main()
函数)定义了两次,一次在helloworld.o
,一次在main.o
。
您可能在同一个项目中有两个源文件helloworld.c
和main.c
,并且都定义了一个名为main
的函数。
您只能在程序中拥有一个main
功能。从Xcode项目中删除这两个源文件(和关联的目标文件)中的一个应该可以解决问题。 (我自己没有使用Xcode;也许其他人可以告诉你如何做到这一点,如果不明显的话。)
(正确的定义是int main(void)
,而不是旧式的main()
,但我认为这与您所看到的症状无关。)
有几个与您的问题密切相关的stackoverflow问题: