我可以在运行 Ubuntu 16.04 的 ARM64 位平台上运行 ARM32 位应用程序吗

我可以在运行 Ubuntu 16.04 的 ARM64 位平台上运行 ARM32 位应用程序吗

我的 64 位 ARM 平台附带 Ubuntu 16,我需要运行为 ARM32 编译的 32 位应用程序:

[root@artik publish]# file myApp
myApp: ELF 32-bit LSB executable, ARM, EABI5 version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux-armhf.so.3, for GNU/Linux 2.6.32, BuildID[sha1]=b455beda566647d2bfebccd157261c60c60f64b3, stripped

是否可以在 ARM64 位 Ubuntu 16.0 上运行 ARM32 位应用程序?需要哪些 32 位库才能支持 ARM32 位应用程序?我应该从哪里安装它们?

下面的文章回答了针对 x86 的相同问题,但是如何在 ARM64 上为 Arm32 应用程序执行此操作?

如何在 64 位 Ubuntu 中运行 32 位应用程序?

提前致谢,Emeel

答案1

我找到了一种方法来做到这一点,如以下链接中所述(由 James Kingdon 解释,感谢!)

https://forum.armbian.com/topic/4764-running-32-bit-applications-on-aarch64/

这些是在 Ubuntu 16.04/AARCH64 上运行简单的 ARM32 应用程序的步骤。

dpkg --add-architecture armhf
apt-get update (ignore the missing x386 packages and hope for the best)
apt-get install libc6:armhf libstdc++6:armhf

创建到下面的 32Bit 库的符号链接:

cd /lib
ln -s arm-linux-gnueabihf/ld-2.23.so ld-linux.so.3

执行此操作后,我的 .NETCore 2.1 应用程序抛出错误,我通过禁用全球化解决了该问题。之后,ARM32 位应用程序成功运行。

—埃米尔

答案2

我在 Debian 11 上使用 .NET 6 时遇到了类似的问题。以下解决方案效果很好:

sudo dpkg --add-architecture armhf

sudo apt install libicu67:armhf libstdc++6:armhf libssl1.1:armhf

解释:

解决方案类似于@EmEn的帖子(https://askubuntu.com/a/1090440/1620736),但不需要禁用全球化,因为这是由 libicu67 提供的(版本号将取决于 Linux 版本)。

对于我的项目,我还需要 libssl*。这似乎取决于使用哪种功能。找到了 .NET Core 3.* 的链接:https://gist.github.com/richlander/467813274cea8abc624553ee72b28213#Dependencies

无论如何,“libc6:armhf”是作为“libstdc++6:armhf”的依赖项安装的,所以我将其从命令行中删除。

我没有看到在我的系统上创建符号链接的任何理由。

相关内容