У меня есть собственный исполняемый файл, который я связываю с определенной версией Xerces. Он также использует кучу других библиотек, некоторые из них не мои. Когда я запускаю ldd для этого исполняемого файла, я вижу, что ему нужна версия Xerces, которая, как я ожидаю, понадобится, плюс еще одна версия. Я предполагаю, что другая версия исходит из одной другой библиотеки, на которую я ссылаюсь.
Возникает вопрос: как узнать, для какой сторонней библиотеки требуется более старая версия Xerces?
Среда - Linux и Solaris (мой исполняемый файл скомпилирован для обоих).
ldd <executable> | sed 's/^.*=> //' | sed 's/ (0x.*)$//' | grep mnh_tst1_main | grep -v xerces | xargs ldd 2>/dev/null | egrep "^/|xerces" | grep -B 1 xerces | less
Это то, что у меня в итоге сработало. Спасибо, что выгнали меня - я "застрял на дураках".
ldd / путь / к / файлу
работает как с исполняемыми файлами, так и с разделяемыми библиотеками.
Без дополнительной информации о том, как вы связываете этот исполняемый файл (есть ли у вас исходный код или нет?), Не очень легко понять вопрос. Я бы посоветовал запустить ldd для каждой библиотеки, на которую ссылается ваш исполняемый файл.