Неопределенный символ при попытке загрузить библиотеку с помощью dlopen

Я пытаюсь загрузить общую библиотеку (плагин), которую мне предоставили (закрытый исходный код), с помощью dlopen под Linux Платформа ARM. Я пытаюсь загрузить это следующим образом:

void* handle = dlopen(/, RTLD_NOW);

Результатом является сбой с этим сообщением:

Failed to load /: undefined symbol: .

Я попытался заглянуть внутрь библиотеки с помощью nm, но кажется, что библиотека была удалена, не удалось найти ни одного символа Я также пробовал использовать readelf -s, и на самом деле получил такой результат:

12663: 00000000     0 NOTYPE  GLOBAL DEFAULT  UND 

Читая, я понял, что readelf -s возвращает все символы, включая те символы, которые определены в библиотеках, на которые он ссылается.

Ответы на этот вопрос мне не совсем ясны: это символ, который должен быть в библиотеке, а которого нет, потому что он был скомпилирован неправильно, или это символ, который я предполагаемый найти где-то еще? Вывод readelf -d, кажется, предполагает, что я предоставляю все необходимые разделяемые библиотеки. Может ли эта ошибка быть связана с ошибкой в ​​способе компиляции исполняемого файла или Разве это не связано с загрузчиком?

Также я читал о значении каждого столбца, но эти значения довольно странные.Как вы интерпретируете это описание символа? Почему адрес 0? Почему тип NOTYPE?

8
задан Community 23 May 2017 в 12:03
поделиться