Каковы возможные причины «не удалось отобразить сегмент из общего объекта: операция не разрешена» и как отладить?

У меня есть два исполняемых файла, оба кросс-скомпилированы 9X_android-api для работы на Android. Я поместил оба устройства 9X_android-ui в один каталог. Я поместил все разделяемые 9X_dynamic-linking библиотеки, от которых они зависят, в одном 9X_android-framework каталоге, включая ld-linux.so.3. Я запускаю 9X_android-framework исполняемые файлы, используя:

ld-linux.so.3 9X_linker-errors - путь-библиотеки / путь / к / библиотекам 9X_android имя-исполняемого_файла

оба работают на более 9X_android-ui старых версиях Android при работе от имени 9X_linking-errors любого пользователя. Оба работают на последней 9X_linker версии Android, если они работают с правами 9X_linking-errors root. Только один работает на последней 9X_android-api версии Android при запуске от имени любого 9X_android-sdk пользователя. Вместо этого он дает:

не удалось 9X_linking-errors отобразить сегмент из общего объекта: операция 9X_android имя_файла не разрешена

Как узнать, чем отличается 9X_executable исполняемый файл, который не запускается?

Я 9X_link-errors много читаю в Интернете, и большинство людей, которые 9X_android-sdk сталкиваются с этой ошибкой, либо:

A) у вас 9X_android нет прав на выполнение для одной из библиотек, от 9X_android-sdk которой они зависят, или для самого исполняемого 9X_dynamic-linking файла.

или

B) пытаются запустить из каталога, который 9X_linking-errors смонтирован как NOEXEC.

Похоже, что оба эти 9X_android-sdk случая не соответствуют действительности. Он 9X_android-sdk может найти все библиотеки, и я могу загрузить 9X_android-framework любую библиотеку самостоятельно и посмотреть, от 9X_android-framework каких еще вещей она зависит. Также я могу 9X_linking запускать базовые скрипты из интересующих 9X_android каталогов.

Новая версия Android, Jelly Bean, представляет 9X_linking собой другую версию ядра Linux, и мне интересно, связано 9X_android-api ли это с ней.

Что подарить? Как мне отлаживать?

27
0
3
Общее количество ответов: 3

Ответ #1

Ответ на вопрос: Каковы возможные причины «не удалось отобразить сегмент из общего объекта: операция не разрешена» и как отладить?

Проблема с разрешением. Необходимо перемонтировать 9X_executable / tmp. У меня работает следующая команда 9X_linker-errors (Centos 7):

sudo mount / tmp -o remount, exec

30
0

Ответ #2

Ответ на вопрос: Каковы возможные причины «не удалось отобразить сегмент из общего объекта: операция не разрешена» и как отладить?

У меня была эта ошибка в другом контексте. По 9X_linking-errors какой-то причине возникает ошибка при попытке 9X_android-api использовать папку / tmp.

Чтобы решить эту проблему, я 9X_linker-errors просто:

mkdir tmp export TMPDIR=`pwd`/tmp 

24
1

  • Это помогло решить совершенно не связанную проблему (установка Python / Anaconda на машине, где у меня не было доступа ...

Ответ #3

Ответ на вопрос: Каковы возможные причины «не удалось отобразить сегмент из общего объекта: операция не разрешена» и как отладить?

Проблема заключалась в том, как были скомпилированы 9X_executable исполняемые файлы. Их нужно было скомпилировать 9X_dynamic-linking с помощью кросс-компилятора, который должным 9X_linker-errors образом поддерживал бы новые устройства 9X_android-sdk arm. Компилятор, который я использовал, сгенерировал 9X_executable исполняемые файлы, которые работали только 9X_android-sdk на подмножестве устройств arm. Проблема 9X_android-api заключалась не в разных версиях Android.

3
0