1

对于一个简单的“hello world”应用程序,我使用以下命令来使用 GCC 编译器创建一个 .exe 文件:

cpp hello.c > hello.i

(成功的)

gcc -S hello.i

(成功的)

as -o hello.o hello.s

(成功)

当最终使用以下命令链接文件以获取 .exe 时,出现错误:

C:\C_Experiments\test>ld -o test2.exe test2.o
test2.o:test2.c:(.text+  0  x  9): undefined reference to __main
test2.o:test2.c:(.text+0 x    15): undefined reference to printf
ld: test2.o: bad reloc address 0x0 in section `.pdata'
4

1 回答 1

2

您需要链接包含启动功能和所有其他标准功能的运行时库。

为什么不跳过预处理器和汇编器步骤,直接进入目标文件?并gcc在链接时使用哪个会自动添加所需的额外库?或者对于简单的单源文件程序直接转到可执行文件?

任何一个

$ gcc hello.c -c -o hello.o
$ gcc hello.o -o hello

或者

$ gcc hello.c -o hello
于 2013-06-23T18:59:11.463 回答