Что если динамическая библиотека 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
источники перекомпилировать и заново связать его правильно.