Pergunta

Há um executável que é dinamicamente ligado ao número de objetos compartilhados. Como posso determinar, à qual deles algum símbolo (importado para executável) pertence?

Se houver mais de uma possibilidade, eu poderia ld silmulate e ver de onde ele está sendo levado?

Foi útil?

Solução

Outras dicas

Assim como os mencionados Charlie " ldd " poder fazer algumas das coisas que você está procurando.

Se você pode ligar novamente o executável, a maneira mais simples para descobrir onde referências e definições vêm de está usando bandeira ld -y. Por exemplo:

$ cat t.c
int main() { printf("Hello\n"); return 0; } 

$ gcc t.c -Wl,-yprintf 
/lib/libc.so.6: definition of printf

Se você não pode vincular novamente o, ldd executável então rodar nele, e 'nm -D' em seguida, executado em todas as bibliotecas listadas em ordem, e grep para o símbolo que você está interessado.

$LD_DEBUG=bindings my_program

Isso imprimir todas as ligações símbolo no console.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top