Qual biblioteca compartilhada requer outra biblioteca compartilhada?

1

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).

    
por Arkadiy 08.11.2010 / 22:22

3 respostas

1

ldd / path / to / file

funciona tanto para executáveis quanto para bibliotecas compartilhadas.

    
por 08.11.2010 / 22:35
1
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".

    
por 08.11.2010 / 23:08
0

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.

    
por 08.11.2010 / 22:36