Domanda

Sono un piccolo problema: devo aprire un file linker che ha estensione .a. Io uso Dev-C ++.

È stato utile?

Soluzione

I file sono archivi .a ar (qualcosa come archivi zip) del file oggetto (.o). È possibile elencare i file nel file di .a utilizzando il programma ar:

ar t file.a

e estrarre tutti i file:

ar x file.a

Altri suggerimenti

I file con estensione .a sono librerie statiche utilizzando un file Unix convenzioni di denominazione. Non sono molto di più di una raccolta indicizzata di codice oggetto. Non è tanto aprirli (a meno che non hai uno strumento come nm o gdb disponibili, entrambi i quali possono fare le cose sensibili con una libreria, se non necessariamente quello che si potrebbe desiderare), come dire la linker usarli durante il collegamento. Con la maggior parte linker, è importante mettere tutte le librerie (sia statico che dinamico / comune) dopo il codice del programma principale sulla riga di comando del linker e l'ordine di librerie questioni troppo.

Vuoi davvero dire che si desidera Apri il file, o meglio che si desidera collegamento con il vostro codice?

Dev-C ++ per default viene installato con il compilatore MinGW / GCC. Se l'archivio non è specificamente costruito per funzionare con MinGW (ad esempio può essere un archivio di Cygwin o Linux), non sarà in grado di collegarlo al MinGW codice generato.

Se l'archivio è una libreria compatibile con MinGW / GCC, allora è sufficiente collegarlo al vostro codice. In Dev-C ++ è necessario aggiungere l'archivio alle opzioni del progetto linker, o aggiungendo il percorso completo dell'archivio (c'è un pulsante per che nelle opzioni di progetto), o mettendo l'archivio in un percorso definito da un'opzione -L<path> , e quindi l'aggiunta di un'opzione -l<archive>. Si noti che id l'archivio si chiama libXXX.a, allora l'opzione -l<archive> sarà `-lXXX '; il prefisso "lib" e ".a" estensione sono implicite.

Se si vuole semplicemente esaminare un archivio per determinare quali simboli esterni che fornisce, quindi il nm utilità può essere usato per questo. Se si desidera estrarre i file oggetto singoli, quindi utilizzare il ar , anche se non riesco a pensare a una buona ragione per cui ci si vuole fare neanche.

fstream , o fstream file_op("c:\\test.a",ios::in);, e non dimenticate di includere fstream.h .

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