可以在 musllibc linux 上执行裸机目标二进制文件吗

can a bare metal targeted binary be executed on a musllibc linux

我的二进制文件使用 https://developer.arm.com/-/media/Files/downloads/gnu-a/10.3-2021.07/binrel/gcc-arm-10.3-2021.07-x86_64-arm-none-eabi.tar.xz

中的工具链编译

带有 link 标志:

-lstdc++ -Wl,-z,relro,-z,now -pass-exit-codes -lm -Wall '--specs=rdimon.specs' -lrdimon '-mcpu=cortex-a72.cortex-a53' -mthumb -static

编译成功,但是当我在我的openwrt路由器上执行这个文件时,它说:

分段错误。

我认为裸机二进制文件也可以在 linux 系统上执行,它与任何 os 没有任何关系,仅与 cpu 模型有关。我说得对吗?

仅供参考:

我的芯片型号是瑞芯微3389,armv8,4个cortex-a72核心和2个cortex-a53核心,运行 aarch64模式下

  1. 我认为 bare-metal 二进制文件也可以在 linux 系统上执行,它与任何 os 没有任何关系],仅适用于 cpu 型号。我说得对吗? 不,你不是。

  2. 如果您的 SoC 有 A72 和 A53 内核,则您没有使用正确的编译器:如果您正在为其编写 bare-metal 程序,则必须使用 aarch64-none-elf toolchain, and not the arm-none-eabi一个,

  3. OpenWRT 是一个 Linux 操作系统:在基于 glibc 的 Linux 系统上,您将使用 aarch64-none-linux-gnu toolchain, but when targeting a musl-libc-based system, you should for example use a aarch64-linux-musl 工具链。