可以在muslibc 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,

链接标志:

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

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

分割错误。

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

供参考:

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

  1. 我认为裸机二进制文件也可以在linux系统上执行,它与任何操作系统没有任何关系,只与cpu模型有关。我说的对吗?不,你不是。

  2. 如果你的SoC有A72和A53内核,你没有使用正确的编译器:如果你为它编写裸机程序,你将不得不使用aarch64-none-elf工具链,而不是arm-none-eabi工具链,

  3. OpenWRT是一个Linux操作系统:在基于glibc的Linux系统上,您将使用aarch64-none-linux-gnu工具链,但是当针对基于musl-libc的系统时,您应该使用aarch64- Linux - muscle工具链。

相关内容

最新更新