【发布时间】:2021-08-06 09:58:29
【问题描述】:
我正在尝试在运行 NetBSD 9.1 的 Raspberry Pi 3 B+ 上使用 GNU 汇编器 (as) 组装一个简单的 Hello World 程序
我需要向 as 或 ld 添加哪些标志才能使它们为我正在使用的架构正确组装代码?
$ as -o hllwrld.o hllwrld.s
$ ld -o hllwrld hllwrld.o
$ ./hllwrld
-sh: Cannot execute ELF binary ./hllwrld
$ uname -a
NetBSD rpi 9.1 NetBSD 9.1 (RPI) #0: Sun Oct 18 19:24:30 UTC 2020 mkrepro@mkrepro.NetBSD.org:/usr/src/sys/arch/evbarm/compile/RPI evbarm
这是 aarch64 还是 arm64?
我知道有手册页,但我只是在学习汇编,所以我什至不知道我什至需要寻找哪些配置/标志/参数。
感谢您的帮助。
【问题讨论】:
-
aarch64 和 arm64 是同义词。将
file ./hllwrld与file /bin/ls(或任何其他已知工作的可执行文件)进行比较以查看您的NetBSD 系统需要什么样的可执行文件可能是个好主意。 (由于您链接了静态可执行文件,因此会出现一些差异,但显示差异可能会让某人帮助您,即使他们不在 ARM 上也使用 NetBSD) -
可能是错误设置的 ELF 解释器路径。
-
@fuz:可能,但在 Linux 上会导致
execve返回-ENOENT,因此 shell 会打印“没有这样的文件或目录”。不过,BSD 可能会有所不同。当然,只有在没有任何库选项的ld在此系统上默认为动态链接时,这才有可能。
标签: assembly raspberry-pi gnu-assembler netbsd