可以在 musllibc linux 上执行裸机目标二进制文件吗
can a bare metal targeted binary be executed on a musllibc linux
中的工具链编译
带有 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模式下
我认为 bare-metal 二进制文件也可以在 linux 系统上执行,它与任何 os 没有任何关系],仅适用于 cpu 型号。我说得对吗?
不,你不是。
如果您的 SoC 有 A72 和 A53 内核,则您没有使用正确的编译器:如果您正在为其编写 bare-metal 程序,则必须使用 aarch64-none-elf toolchain, and not the arm-none-eabi一个,
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 工具链。
带有 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模式下
我认为 bare-metal 二进制文件也可以在 linux 系统上执行,它与任何 os 没有任何关系],仅适用于 cpu 型号。我说得对吗? 不,你不是。
如果您的 SoC 有 A72 和 A53 内核,则您没有使用正确的编译器:如果您正在为其编写 bare-metal 程序,则必须使用 aarch64-none-elf toolchain, and not the arm-none-eabi一个,
OpenWRT 是一个 Linux 操作系统:在基于
glibc
的 Linux 系统上,您将使用 aarch64-none-linux-gnu toolchain, but when targeting amusl-libc
-based system, you should for example use a aarch64-linux-musl 工具链。