Могу ли я запустить битовое приложение ARM32 на платформе ARM64bit под управлением Ubuntu 16.04

Моя 64-битная платформа ARM поставляется с Ubuntu 16, и мне нужно запустить 32-битное приложение, скомпилированное для ARM32:

[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

Можно ли запустить битовое приложение ARM32 на ARM64bit Ubuntu 16.0? Какие 32-битные библиотеки необходимы для поддержки битового приложения ARM32 и откуда их устанавливать?

Ниже статья отвечает на этот же вопрос для x86, но как я могу сделать это для приложений Arm32 на ARM64?

Как запустить 32-битное приложение в Ubuntu 64-бит?

Спасибо заранее, Эмиль

2 ответа

Я нашел способ сделать это, объясненный в следующей ссылке (Джеймс Кингдон, спасибо!)

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

Это шаги для запуска простого приложения ARM32 на Ubuntu 16.04/AARCH64.

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

Создайте символическую ссылку на 32-битную библиотеку ниже:

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

После этого мое приложение.NETCore 2.1 выдало ошибку, которую я обошел, отключив глобализацию. После этого приложение ARM32 bit успешно запустилось.

-Emeel

У меня была аналогичная проблема с .NET 6 в Debian 11. Следующее решение прекрасно работает:

      sudo dpkg --add-architecture armhf

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

Объяснение:

Решение похоже на пост @EmEn ( /questions/18180/mogu-li-ya-zapustit-bitovoe-prilozhenie-arm32-na-platforme-arm64bit-pod-upravlen/18183#18183), но не требует отключения глобализации, так как это предоставляется libicu67 (номер версии будет зависеть от версии Linux).

Для моего проекта мне также понадобился libssl*. Кажется, это зависит от того, какую функциональность вы используете. Нашел эту ссылку для .NET Core 3.*: https://gist.github.com/richlander/467813274cea8abc624553ee72b28213#Dependencies

«libc6:armhf» в любом случае устанавливается как зависимость от «libstdc++6:armhf», поэтому я удалил его из командной строки.

Я не видел причин создавать символическую ссылку в своей системе.

Другие вопросы по тегам