Msgstr "Нет такого файла или каталога", пытающегося выполнить linux binary на Android-устройстве
Я построил собственный бинарный файл ARM для Linux с помощью инструментальной привязки Android GCC (простой Linux, без андроида или NDK).
Я подключил, с моего компьютера, через оболочку adb, к планшету под управлением Android 4.
Я "adb push" редактировал этот двоичный файл в /system/bin на этом устройстве, надеясь, что я его запустил. Я отметил его исполняемый файл с помощью chmod 777.
Если я попытаюсь выполнить его, я бы получил "Нет такого файла или каталога".
Дополнительная информация:
Маленькая программа использует fc и fm libs. Поскольку инструментальная цепочка ARM не имеет crt1, который, как я нашел в примере, обычно содержит код запуска, мы искали файлы, содержащие его в сборке Android, найдены crtbegin_dynamic и crtend_dynamic, но для _статического эквивалента одна из пары не было, поэтому я не прошел статику в GCC. Он был построен с помощью "-nostdlib".
Какая может быть проблема (проблемы)?
Ответы
Ответ 1
Если вы работаете на 64-битной платформе, такой как Ubuntu 64, этот совет может помочь вам решить проблему. Просто попробуйте установить 32-разрядные библиотеки совместимости i386,
APT-GET:
sudo apt-get install ia32-libs
Он отлично работал у меня. Дайте мне знать, если вы застряли в одной и той же проблеме.
Для Ubuntu 13.10 и выше
Как сказал aditya в комментариях к этому ответу:
Начиная с Ubuntu 13.10, нужно запустить это сейчас:
sudo apt-get install lib32z1
, вам может понадобиться получить также stdlibs С++, с этим: sudo apt-get install lib32ncurses5 lib32stdc++6
Ответ 2
Чтобы изменить комментарий aditya выше, вы также можете использовать следующие для stdlib в С++ в Ubuntu 13.10:
sudo apt-get install lib32ncurses5 libstdc++6:i386