2013-04-24 12 views
5

Ho un file di libreria condiviso (libmylib.so), ma non ho file di intestazione (mylib.h) per esso.Genera file di intestazione (* .h) per file di libreria condivisa (* .so)

Conoscete alcuni modi/strumenti per generare questo file di intestazione dal file di libreria condivisa?

+1

Probabilmente poco pratico, se non impossibile. Dove hai preso questo file .so? –

+0

Voglio usare la mia vecchia libreria con molte utili funzioni. Rimuovo questa libreria con la fonte molti anni fa. Ora ho trovato so-file e voglio solo vedere i metodi esistenti. Posso ripristinare alcuni metodi e chiamarli, inoltre ricordo i nomi per alcuni metodi, ma non ricordo l'ordine dei parametri e delle strutture. Certo, posso usare il disassemblatore, ma prima cerco di trovare un modo più semplice. – dzav

+1

Puoi dare un'occhiata ad alcune delle risposte a questa domanda: http://stackoverflow.com/q/711220/10077 –

risposta

2

In generale, poiché il file .so non contiene informazioni sufficienti sugli elenchi di parametri, in particolare se vengono utilizzati tipi non standard (structs, ad esempio), poiché le informazioni sul tipo non fanno parte di .so file.

Anche se vengono utilizzati solo i tipi standard, l'elenco degli argomenti non fa parte della tabella dei simboli ELF (vedere http://refspecs.linuxbase.org/elf/elf.pdf 1-15ff.).

Tuttavia, se la libreria non viene rimossa (= contiene informazioni di debug), la parte DWARF contiene informazioni sugli elenchi di parametri, vedere How to extract function prototypes from an elf file? per i dettagli.

Problemi correlati