【发布时间】:2021-07-24 03:10:41
【问题描述】:
我正在尝试运行一个打印 hello world 的简单汇编代码
global _start
section .text
_start:
;printing hello world
mov rax,1
mov rdi,1
mov rsi,texta
mov rdx,11
syscall
;exiting
mov rax,60
mov rdi,1
syscall
section .data
texta: db 'Hello world'
我是用 nasm 组装的
root@localhost:~# nasm -f elf64 do.asm -o do.o
但是当我尝试编译/运行它时,它会显示错误
root@localhost:~# ld do.o -o do
ld: do.o: Relocations in
generic ELF (EM: 62)
ld: do.o: error adding
symbols: file in wrong format
任何解决方法 我在 Ubuntu-in-termux 中运行它
提前致谢
请解决
【问题讨论】:
-
AArch64 Android
ld无法链接 x86-64 对象文件。您也不能在 AArch64 内核上本地运行 x86-64 机器代码二进制文件,只能通过 qemu 或其他一些仿真。要么使用 AArch64 汇编语言编写(并使用as而不是 NASM 进行汇编),要么使用 x86-64 跨工具链和模拟器。
标签: android ubuntu assembly nasm termux