对于一个简单的“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'
答案 0 :(得分:2)
您需要链接包含启动功能和所有其他标准功能的运行时库。
为什么不跳过预处理器和汇编程序步骤,直接转到目标文件?并且在链接时使用gcc
会自动添加所需的额外库吗?或者对于简单的单源文件程序直接转到可执行文件?
无论
$ gcc hello.c -c -o hello.o
$ gcc hello.o -o hello
或者
$ gcc hello.c -o hello