【问题标题】:64 assembly language using nasm on ubuntu在 ubuntu 上使用 nasm 的 64 位汇编语言
【发布时间】:2014-01-22 23:59:48
【问题描述】:

我正在尝试用 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: 输入文件 `hello64.o' 的 i386:x86-64 架构不兼容 带 i386 输出

即使使用标志 --oformat elf64-x86-64 或 elf64-little 或 elf64-big,我也会遇到同样的错误。

有人可以帮忙吗?

【问题讨论】:

标签: ubuntu assembly 64-bit nasm


【解决方案1】:

以下适用于我的系统:

nasm -f elf64 hello64.asm
ld -dynamic-linker /lib64/ld-linux-x86-64.so.2 -o hello64 hello64.o

【讨论】:

  • 你有安装 ia32-libs 包吗?
【解决方案2】:

您可以考虑再次运行apt-get update。我正在更新版本 15.04 上运行它,它对我有用。

【讨论】:

    猜你喜欢
    • 2017-03-20
    • 1970-01-01
    • 1970-01-01
    • 2010-10-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-08
    • 2012-10-22
    相关资源
    最近更新 更多