问题描述
我正在尝试在运行 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?
我知道有手册页,但我只是在学习汇编,所以我不知道我什至需要寻找哪些配置/标志/参数。
感谢您的帮助。
解决方法
这可能由于多种原因而失败,所有这些都归结为缺少参数和/或 ld 的标志,并且可能包括运行时链接器信息、启动代码和库。
试试这个提示,看看幕后发生了什么:
$ cc -v -o hllwrld hllwrld.o
,
Klaus 的 answer 应该为您的系统提供足够的线索,但您可能还想查看 NetBSD/i386 和 amd64 的工作示例:
github.com/robohack/experiments: thello.s
如果您在 emacs 中打开文件并批准局部变量设置,那么 compile-command
将设置为命令行,该命令行将在兼容的 NetBSD 系统上组装、链接和运行示例程序。