GNU 作为 ld 标志,用于在 NetBSD 上为 arm 进行汇编

问题描述

我正在尝试在运行 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 系统上组装、链接和运行示例程序。

>