我只是写了一个简单的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)*
最佳答案
虽然您指示 gcc
将编译的输出放入 ./obj/test_main.o
中,但您并没有告诉它创建一个目标文件而不是一个可执行文件。默认情况下,当给定源文件时,gcc
会编译并链接它。因此,./obj/test_main.o
是一个可执行文件,而第二个命令提示它被赋予了一个可执行文件而不是一个目标文件。
您可以通过将第一个命令更改为来解决此问题:
gcc ./src/test_main.c -c -o ./obj/test_main.o
-c
开关指示 gcc
仅进行编译,而不进行链接。
关于c - 使用 GCC 编译简单的 C 程序时出现 clang 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51530205/