我正在尝试用64位汇编编写一个简单的hello world程序,并在Ubuntu 64位上运行。该计划如下:
global _start ; entry point export for ld section .text
_start: ; system call to write message to stdout
mov rax, 1 ; sys_write
mov rdi, 1 ; stdout
mov rsi, mes ; message address
mov rdx, len ; message length
syscall ; exit sys call
mov rax, 60 ; exit call id
mov rdi, 0 ; return success
syscall
section .data
mes: db 'Hello, world!',0x0A ; message
len : equ $-mes
我使用nasm -f elf64 hello64.asm
组装了它
并尝试使用ld -o hello64 hello64.o
链接它
它给了我以下错误 -
ld:i386:输入文件“hello64.o”的x86-64架构不兼容 使用i386输出
即使使用标志--oformat elf64-x86-64或elf64-little或elf64-big,我也会收到同样的错误。
有人可以帮帮忙吗?
答案 0 :(得分:2)
以下适用于我的系统:
nasm -f elf64 hello64.asm
ld -dynamic-linker /lib64/ld-linux-x86-64.so.2 -o hello64 hello64.o
答案 1 :(得分:0)
您可以考虑再次运行apt-get update
。我在更新版本15.04
上运行它并且它正在为我工作。