Подберите библиотеку с версионными символами
Для библиотеки, загруженной общим объектом, как я могу разрешить версионные символы в исполняемом файле?
Существует частная библиотека, используемая многими исполняемыми файлами в системе, в которой есть ошибка в одной подпрограмме, которую мы должны исправить во всей системе. Это делает что-то вроде LD_PRELOAD громоздким и непрактичным, чтобы пытаться внедрить в каждую среду, из которой могут запускаться эти исполняемые файлы. Таким образом, план дал мне было скопировать сказать, libspecial.so
чтобы libspecial.so.org
и создать новую библиотеку с именем, libspecial.so
который переопределяет, что одна функция и связана с libspecial.so.org
тем чтобы все остальные символы, которые будут загружаться автоматически.
В небольшом тесте с небольшой библиотекой примеров это работало нормально.
Одна функция переопределяется, а все остальные символы в исходной библиотеке прозрачно доступны для основного исполняемого файла.
Однако в рассматриваемой библиотеке есть некоторые версионные символы. По какой-то причине эта информация не передается, и исполняемый файл жалуется (ну, конечно, компоновщик времени выполнения), что он не может найти необходимую информацию о версии.
Как можно разрешить версионные символы в исполняемом файле?
Может быть, если я явно загружу библиотеку с помощью dlopen, существуют ли какие-либо специальные флаги, позволяющие это сделать?
Или есть более простой способ?
Коллега предположил, что мы можем прибегнуть к извлечению всей необходимой версии информации из исполняемых структур ELF, что мы попробовали, и это работает. Но затем мне нужно изменить все исполняемые файлы, и есть также опасение, что это может сломать что-то, что кажется слишком рискованным. Поскольку компоновщик времени выполнения может обрабатывать символы и просто зацикливается на передаче информации о версии, я надеюсь, что мне просто не хватает способа легко обработать это в библиотеке.
0 ответов на вопрос
Похожие вопросы
-
9
В чем разница между командами "su -s" и "sudo -s"?
-
4
Требуется хороший бесплатный образ Ubuntu Server VMWare
-
4
Каковы различия между основными дистрибутивами Linux? Я замечу?
-
-
2
Ограничить использование процессора для Flash в Firefox?
-
2
Как мне заставить мой микрофон работать под Debian GNOME?
-
2
Конки установки - образцы / идеи?
-
3
Каковы различия между оконными менеджерами Linux?
-
2
ThunderBird / Синхронизация освещения с SE k770i
-
4
Файловая система Linux
-
6
Полноэкранная медленная вспышка в KDE 4