Come trovare la libreria, che contiene la definizione di funzione particolare? Ricevo l'errore del linker.Domanda sistema impianto GNU
risposta
È possibile utilizzare lo strumento nm
della riga di comando per elencare i simboli esportati binari:
~/src> cat nm-test.c
static int plus_four(int x)
{
return x + 4;
}
int sum_plus_four(int a, int b)
{
return plus_four(a + b);
}
int product_plus_four(int a, int b)
{
return plus_four(a * b);
}
~/src> gcc -c nm-test.c
~/src> nm ./nm-test.o
00000000 t plus_four
00000023 T product_plus_four
0000000b T sum_plus_four
Secondo the manual, 't' significa che il simbolo è nella (testo) segmento di codice, e mezzi maiuscole è pubblico.
Se si dispone di un simbolo che si sta cercando, è possibile utilizzare nm
per rendere i simboli esportati da una libreria accessibile ad es. grep:
$ find -name lib*.a /example/library/path | xargs nm | grep -E "T $SYMBOL_TO_FIND"
Questa riga di comando è uno schizzo non verificato, ma dovrebbe mostrare il concetto.
Se fa parte dell'API standard C, eseguire semplicemente man
, dovrebbe indicare chiaramente dove è definita la funzione.
E se non lo è, la documentazione della biblioteca indica presumibilmente come collegarsi ad essa. – nos
Se si desidera scoprire la libreria in modo non programmatico, è possibile trovare utile LSB Navigator. Inserire la funzione nella casella di ricerca e controllare la libreria nella riga con lo "stato" verde.
http://coldattic.info/pic/165509391387.png
Questa sarà la libreria "convenzionale" che contiene la funzione (nell'esempio descritto sopra, librt
è la libreria corretta per mq_unlink
, quindi si collega con -lrt
). Basta collegarsi con quella libreria e funzionerà praticamente su tutti i sistemi Linux.
Nota: ero uno degli sviluppatori dello strumento che consiglio.
- 1. Come proibire le chiamate di sistema, GNU/Linux
- 2. Impianto per la registrazione di windsor Castle
- 3. Flask for Python - domanda architettonica riguardante il sistema
- 4. Domanda modello XSLT domanda
- 5. Cosa fa l'opzione estensioni gnu-gnu?
- 6. Animazione procedurale della crescita di un impianto 2D
- 7. Rilevare tutti i rami in un quadro impianto
- 8. Domanda su Eventi Windows
- 9. Python Webbrowser domanda
- 10. GNU m4: inversioni di escape (`)
- 11. Assemblea, ciao domanda mondiale
- 12. Domanda di licenza: intestazione copyright GPL
- 13. Alternative a GNU diff?
- 14. Implementazione thread GNU/Linux
- 15. Alternativa Leggera GNU
- 16. Debugging GNU make
- 17. GNU Assembler commenti
- 18. fine linea (documentazione GNU)
- 19. GNU make's -j opzione
- 20. __attribute__ in GNU C
- 21. GNU make cheat-sheet
- 22. PHP XSS Domanda/chiarimento
- 23. Thread.getId() domanda di univocità globale
- 24. Interpola Domanda
- 25. Timer.Interval Domanda
- 26. .NET 4 ... Parallel.ForEach() domanda
- 27. Come posso firmare la mia domanda con la chiave di firma del sistema?
- 28. Come includere Boost nel progetto GNU Autotools?
- 29. Domanda di progettazione livello database
- 30. Un'altra domanda a virgola mobile
Non trova i nomi di funzione assegnati alla libreria, piuttosto che la libreria con il nome della funzione? –
@Pete: vero, ma poiché esporta le informazioni, può essere utilizzato per eseguire il comando grep su file di libreria. – unwind
Grazie .. Ho capito .. – Dinesh