Domanda

Esiste un eseguibile collegato dinamicamente al numero di oggetti condivisi. Come posso determinare a quale di essi appartiene un simbolo (importato in eseguibile)?

Se ci sono più di una possibilità, potrei silmulare ld e vedere da dove viene presa?

È stato utile?

Soluzione

Altri suggerimenti

Oltre a quelli citati da Charlie, " ldd " ; potrebbe fare qualcosa di quello che stai cercando.

Se riesci a ricollegare l'eseguibile, il modo più semplice per scoprire da dove provengono riferimenti e definizioni è usare il flag ld -y . Ad esempio:

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

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

Se non riesci a ricollegare l'eseguibile, esegui ldd , quindi esegui 'nm -D' su tutte le librerie elencate in ordine e grep per il simbolo che ti interessa.

$LD_DEBUG=bindings my_program

Ciò stamperebbe tutti i collegamenti dei simboli sulla console.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top