树莓派3:在arm64系统上运行arm32程序



当我运行32位Raspibian时,我在我的Raspberry Pi 3上完美地运行了我的程序。它是一个Linux 5.10.33-v7+ #1 armv7l系统。这些程序是在这个系统上用C++编译的。如果我用该系统将可执行文件复制到另一张卡上,它就可以工作了。

但是,当我使用Debian 4.19.181-1 aarch64 Linux 4.19.0.16-arm64时,这些相同的可执行文件不会运行(我复制编译后的文件并将其粘贴到其他系统上(。

当尝试运行时,它返回:

-bash:/Myprogram:没有这样的文件或目录。

如果我尝试使用bash Myprogram运行,它会返回:

Myprogram:无法执行二进制文件

根据我的研究,这是一个不兼容的体系结构错误。

我已经尝试使用chmod更改权限。

我认为32位文件应该在64位系统上工作。

";文件";命令返回:

ELF 32位LSB可执行文件,ARM,EABI5版本1(GNU/Linux(,动态链接的解释器/lib/ld-linux-armhf.so.3,用于GNU/Linux 3.2.0,BuildID[sha1]=ad484c860b63e0d8735c2b7aa5c69f2e49caaf29,带debug_info,未剥离

非常感谢


我知道问题出在架构上。但为什么同一个处理器(同样的raspberry(既可以运行armv7l操作系统,也可以运行arm64操作系统?兼容性是如何工作的?

为什么树莓同时运行arm64操作系统和armv7l操作系统而不运行程序?

这不仅仅是一个32或64位的问题。您是两种不同的体系结构,为了使程序正常运行,您别无选择,必须为此体系结构重新编译程序。

如果你想实现可移植性,你可以使用像";Make";。

相关内容

最新更新