Frage

Ich habe ein kleines Problem: Ich habe eine Linker-Datei zu öffnen, die .a Erweiterung hat. Ich benutze Dev-C ++.

War es hilfreich?

Lösung

.a Dateien sind ar Archive (so etwas wie Zip-Archive) des Objekts (.o-Dateien). Sie können Dateien in .a Datei mit ar Programmliste:

ar t file.a

Und extrahiert alle Dateien:

ar x file.a

Andere Tipps

Dateien mit der Erweiterung .a sind statische Bibliotheken Unix-Datei mit Namenskonventionen. Sie sind nicht viel mehr als eine indizierte Sammlung von Objektcode. Sie haben nicht so viel öffnen sie (es sei denn, Sie ein Tool wie nm oder gdb zur Verfügung haben, von denen beide können tun vernünftige Dinge mit einer Bibliothek, wenn nicht unbedingt das, was Sie wollen, könnten), wie sagen die Linker, sie zu benutzen, wenn die Verknüpfung. Bei den meisten Linker ist es wichtig, alle Bibliotheken setzen (sowohl statische als auch dynamische / shared) nach dem Hauptprogrammcode auf der Linker-Befehlszeile und die Reihenfolge der Bibliotheken zu wichtig ist.

Haben Sie wirklich bedeuten, dass Sie möchten, open die Datei, oder besser gesagt, dass Sie möchten link es mit Ihrem Code?

Dev-C ++ ist standardmäßig mit dem MinGW / GCC-Compiler installiert. Wenn das Archiv speziell mit MinGW zur Arbeit gebaut wird nicht (zum Beispiel kann es ein Cygwin oder Linux-Archiv sein), werden Sie nicht in der Lage sein, es zu MinGW generierten Code zu verbinden.

Wenn das Archiv eine MinGW / GCC kompatible Bibliothek ist, dann verbinden Sie es einfach an Ihren Code. In Dev-C ++ Sie das Archiv an die Projekt Linker-Optionen hinzufügen müssen, entweder durch den vollständigen Pfad zum Archiv hinzugefügt (es für den in den Projektoptionen ein Knopf ist) oder durch das Archiv in einem Pfad durch eine -L<path> Option definiert platzieren und das Hinzufügen dann eine -l<archive> Option. Beachten Sie, dass id das Archiv libXXX.a genannt, dann wird die -l<archive> Option `-Lxxx '; der "lib" Präfix und ".a" Erweiterung ist implizit.

Wenn Sie wollen einfach ein Archiv zu prüfen, um festzustellen, welche externen Symbole es bietet, dann ist die nm Dienstprogramm kann dafür verwendet werden. Wenn Sie die einzelnen Objektdateien extrahieren möchten, verwenden Sie dann die ar , obwohl ich nicht aus einem guten Grund denken, warum Sie entweder tun wollen würde.

Versuchen Sie fstream oder fstream file_op("c:\\test.a",ios::in);, und vergessen Sie nicht, fstream.h enthalten .

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top