Назад | Перейти на главную страницу

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

У меня есть устаревшая библиотека 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 исходники, чтобы заново дополнить и заново связать его должным образом