Как определить версию библиотеки в Unix без «строк» ​​или «что» - PullRequest
1 голос
/ 28 февраля 2010

У меня есть копия библиотеки обработки XML-экспата во встроенной системе, работающей с busybox 0.61. Мне нужно узнать версию библиотеки, но у меня нет «строк» ​​или «каких» приложений на изображении, и я не могу перекомпилировать изображение. Эти изображения busybox, которые я вынужден использовать, сильно повреждены.

Могу ли я узнать, какая версия библиотеки экспатов установлена ​​без утилит 'strings' или 'what'? Библиотека является общей (libexpat.so.1)

Ответы [ 4 ]

2 голосов
/ 28 февраля 2010

Если это единовременная проблема, не могли бы вы скопировать библиотеку на другой компьютер с установленным strings и запустить ее там?

2 голосов
/ 28 февраля 2010

Если это libexpat 1.95.0 или новее, библиотека будет иметь функцию XML_ExpatVersion(), которая возвращает char *, содержащую версию библиотеки.

2 голосов
/ 28 февраля 2010

Вам нужно будет написать свой собственный эквивалент «строк». Версии не являются частью формата эльфов. Некоторые библиотеки содержат строку с версией, другие - нет.

В частности, для expat вы можете получить хорошую идею, используя nm, чтобы увидеть, какие API присутствуют и отсутствуют. Программно, это будет dlopen и dlsym.

1 голос
/ 28 февраля 2010

Запустите ident против библиотеки, чтобы узнать, какая это версия. Он похож на strings, но он выбирает идентификаторы библиотеки контроля версий редакции.

Надеюсь, это поможет, С наилучшими пожеланиями, Том.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...