C编译问题?

时间:2012-03-27 01:44:26

标签: c compiler-construction

我刚开始学习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吗?

2 个答案:

答案 0 :(得分:5)

你试过吗

int main()甚至是int main(int argc, char**argv)

答案 1 :(得分:2)

错误消息表示符号_main(引用main()函数)定义了两次,一次在helloworld.o,一次在main.o

您可能在同一个项目中有两个源文件helloworld.cmain.c,并且都定义了一个名为main的函数。

您只能在程序中拥有一个main功能。从Xcode项目中删除这两个源文件(和关联的目标文件)中的一个应该可以解决问题。 (我自己没有使用Xcode;也许其他人可以告诉你如何做到这一点,如果不明显的话。)

(正确的定义是int main(void),而不是旧式的main(),但我认为这与您所看到的症状无关。)

有几个与您的问题密切相关的stackoverflow问题: