我有一个简单的c程序,叫做hello.c,存放在我的桌面上:
#include <stdio.h>
int main() {
printf("Hello world!\n");
return 0;
}
我运行了以下命令。
- 我使用以下命令进行预处理:cpp hello.c > hello.i
- 我使用以下命令进行编译:gcc -S hello.i
- 我使用以下命令进行汇编:as -o hello.o hello.s
到目前为止一切都很好。但是,我无法进行链接。除其他命令外,我尝试了以下命令:
ld -o hello.exe hello.o
ld -o hello.exe hello.o -lgcc
ld -o hello.exe hello.o -nostdlib -lgcc
什么都不起作用。我在每一种情况下都遇到了链接错误:
hello.o:hello.c:(.text+0x9): undefined reference to `__main'
hello.o:hello.c:(.text+0x15): undefined reference to `puts'
我该如何链接已组装的程序hello.o,以便最终生成可执行程序hello.exe?我漏掉了什么吗? [使用Windows 8.1,Mingw版本0.6.2。] 预先致谢。
gcc -o hello.exe hello.c
是什么意思?“什么都不起作用”并不是一个非常有用的错误描述。 - tofro