ldd / path / to / file
funciona tanto para executáveis quanto para bibliotecas compartilhadas.
Eu tenho meu próprio executável que ligo para uma versão específica do Xerces. Ele também usa um monte de outras bibliotecas, algumas delas não são minhas. Quando executo o ldd nesse executável, vejo que ele precisa da versão Xerces que eu espero que ele precise, além de outra versão. Eu suponho que a outra versão vem de uma das outras bibliotecas que eu linkar.
Aqui está a pergunta: como descobrir qual biblioteca de terceiros requer o Xerces mais antigo?
O ambiente é Linux e Solaris (meu executável é compilado para ambos).
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
Isso é o que funcionou para mim no final. Obrigado por me expulsar - eu estava "preso a estúpido".
Sem mais informações sobre como você está ligando este executável (você tem o código fonte ou não?) não é muito fácil entender a questão. Eu sugeriria executar o ldd em cada uma das bibliotecas para as quais seus links executáveis.