Что если динамическая библиотека AIX импортирует один из символов из неправильного места

У меня есть устаревшая библиотека AIX ppc64 mylib.so,

инспектирование dump -Tv На выходе я заметил, что ожидает, что Foo символ будет присутствовать в еще более старой библиотеке oldfoo.so, Однако, похоже, что после выхода новой версии foo они переехали Foo символ другого сонама: foocommon.so а также oldfoo.so больше не экспортирует его, а просто импортирует из foocommon.so,

А также mylib.so Таким образом, динамический компоновщик отказывается работать с двоичным файлом, связанным с mylib.so, говоря это Foo не экспортируется из oldfoo.so,

На самом деле это не так foocommon.so, Можно ли как-то редактировать бинарный файл? mylib.so, изменяя название фактического местоположения Foo символ или иначе сказать динамическому компоновщику, где искать?

Я попытался установить переменные среды:

export LDR_PRELOAD=foocommon.so
export LDR_PRELOAD64=foocommon.so

надеясь, что обычный подход Linux будет работать, но это не изменило ошибку, создаваемую компоновщиком, все еще отказываясь запускать мой исполняемый файл, так как Foo символы не экспортируются oldfoo.so,

Это особенно неясно, так как не ясно, кто еще mylib.so источники перекомпилировать и заново связать его правильно.

0 ответов

Другие вопросы по тегам