0

我正在尝试在运行 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?

我知道有手册页,但我只是在学习汇编,所以我什至不知道我什至需要寻找哪些配置/标志/参数。

谢谢你的帮助。

4

2 回答 2

2

这可能由于多种原因而失败,所有这些都归结为缺少 ld 的参数和/或标志,并且可能包括运行时链接器信息、启动代码和库。

试试这个提示,看看幕后发生了什么:

$ cc -v -o hllwrld hllwrld.o
于 2021-05-17T13:49:03.927 回答
1

Klaus的回答应该为您的系统的细节提供足够的线索,但您可能还想查看 NetBSD/i386 和 amd64 的工作示例:

github.com/robohack/experiments: hello.s

如果您在 emacs 中打开文件并批准局部变量设置,compile-command则将设置为命令行,该命令行将在兼容的 NetBSD 系统上汇编、链接和运行示例程序。

于 2021-05-18T01:49:04.950 回答