Могу ли я запустить битовое приложение 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», поэтому я удалил его из командной строки.
Я не видел причин создавать символическую ссылку в своей системе.