У меня есть устаревшая библиотека AIX ppc64 mylib.so
.
Проверка dump -Tv
вывод, я заметил, что он ожидает, что Foo
символ будет присутствовать в даже более старой библиотеке oldfoo.so
. Однако, похоже, что после нового выпуска foo они переехали Foo
символ к другому soname: 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
исходники, чтобы заново дополнить и заново связать его должным образом