【发布时间】:2016-04-13 07:50:46
【问题描述】:
我在组装一个简单的 64 位 hello world 程序后遇到错误。 我正在使用以下命令:
nasm -f elf64 hello.asm -o hello.o successfull
ld -o hello.o hello -m elf_x86_64 successfull
./hello
错误:无法执行二进制文件执行格式错误
我在 64 位 Ubuntu 虚拟机中执行此操作。 我感谢您的帮助!
【问题讨论】:
-
你真的在使用
ld -o hello.o hello -m elf_x86_64吗?看起来你想要ld -o hello hello.o -m elf_x86_64 -
您确定安装的是 64 位 Ubuntu 吗?也许您安装了 32 位 Ubuntu?
uname -a显示什么? -
嘿,我刚刚检查过,两种方式我都遇到了同样的错误。
-
Linux dell 3.16.0-50-generic #67~14.04.1-Ubuntu SMP Fri...i686 i686 i686 GNU/LINUX uname -a
-
请执行
uname -a命令并告诉我们它的输出。同样在执行ld命令之前执行rm hello以确保您没有垃圾文件。你的版本不应该工作。ld -o hello.o hello表示从文件hello创建一个名为hello.o的输出文件。这是不正确的,除非你有一个名为hello的伪造文件,否则应该抛出错误。
标签: assembly virtual-machine nasm x86-64 ld