Я пытаюсь загрузить общую библиотеку (плагин), которую мне предоставили (закрытый исходный код), с помощью 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?