我试图按顺序编译简单的Hello World C程序。首先创建预处理文件,然后创建程序集文件,然后创建目标文件,最后调用链接器以创建ELF。
问题是我无法执行正在创建的ELF。
我尝试了以下步骤
while
在这一步,我得到了警告
gcc -E hello.c 1>hello.i
gcc -S hello.i
gcc -c hello.s
ld -o hello hello.o -lc
但是会创建一个名为hello的可执行文件。
当我尝试使用执行输出时
ld: warning: cannot find entry symbol _start; defaulting to 0000000000400260
我遇到了错误
./hello
// hello.c包含以下代码
bash: ./hello: No such file or directory
答案 0 :(得分:1)
我建议您用gcc而不是ld链接目标文件(无论它们是如何生成的)。
gcc将使用适当的选项调用ld,因为它对源代码有更多了解,并将创建ld进行假设所需的任何内容。