Linux: есть ли способ редактировать скомпилированную разделяемую библиотеку?
В частности, я ищу, как добавить DT_SYMBOLIC flag
в уже скомпилированную двоичную общую библиотеку?
Вот почему я спрашиваю это :
наше приложение состоит из
- наши собственные библиотеки ( статические libXXX.a)
- некоторые сторонние библиотеки ( общие двоичные файлы библиотеки libYYY.so)
Пока все отлично с приложением.
Теперь я заменил наши статические * libXXX.a на версии с общими библиотеками (libXXX.so).
Все компилируется и ссылки нормально.
Но когда я запускаю приложение, оно запускается и выполняет ожидаемую обработку, а затем падает где-то на половине пути. Обратный след GDB показывает, что происходит сбой в некоторых сторонних общих библиотеках.
Я искал по SOF и нашел интересную статью здесь .
Подсказка, на которую я ссылаюсь:
... add the DT_SYMBOLIC flag to the dynamic section ...
Хотя я сомневаюсь, что это действительно поможет, я думаю, что стоит попробовать.
Есть идеи, как добавить DT_SYMBOLIC flag
к уже скомпилированной / связанной общей библиотеке?
среда : Debian Lenny 64bit с g ++ v4.2.4 и binutils v20.
EDIT : на солярисе есть программа под названием elfedit
. Есть ли что-то похожее для Linux?