c - 使用 GCC 编译简单的 C 程序时出现 clang 错误

标签 c gcc

我只是写了一个简单的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/

相关文章:

c - C语言中如何将数组 "Name"按指定的位置号添加到 "Surname"中?

c - return 1, return 0, return -1 和 exit 的区别?

C 宏观评估

objective-c - XCode 构建结果 : why is it so amazingly complex even for a hello world console app?

C - 输出值计算不正确

python - c_void_p 值无效*

C++20 协程捕获与引用奇怪的崩溃与 `unique_ptr`

c - glibc/realloc/无效指针

没有 stub 的 C RPC

c - 体系结构 x86_64 的 undefined symbol : "_read_line", 从 : _insert in inventory-82371b. o 引用