我只是编写一个简单的C程序,如下所示:
int main(int argc, char *argv[])
{
return argc;
}
但是,当我编译并链接程序时,遇到了Clang错误。设置或gcc怎么了?
LB:test liangbin$ gcc ./src/test_main.c -o ./obj/test_main.o
LB:test liangbin$ gcc ./obj/test_main.o -o ./bin/test_main
ld: can't link with a main executable file './obj/test_main.o' for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)*
答案 0 :(得分:4)
尽管您指示gcc
将编译的输出放在./obj/test_main.o
中,但是您并没有告诉它创建一个目标文件而不是可执行文件。默认情况下,给定源文件时,gcc
会编译并链接它。结果,./obj/test_main.o
是一个可执行文件,第二个命令抱怨说它被赋予了可执行文件,而不是目标文件。
您可以通过将第一个命令更改为以下内容来解决此问题:
gcc ./src/test_main.c -c -o ./obj/test_main.o
-c
开关指示gcc
仅进行编译,而不进行链接。