Frage

Meine Anwendung Links gegen libsamplerate.a. Ich tue dies einfacher, die endgültige binären machen zu verteilen.

Ich bin besorgt, dass vielleicht der Code innerhalb der .a-Datei auf einigen anderen Bibliotheken abhängt ich muß auch verteilen.

Aber wenn es nicht ich mache mir Sorgen, ich zu viel meiner Anwendung bin Blähungen, indem mehrere Kopien zB auch. libc.

Was genau wird innerhalb libsamplerate.a sein? Nur libsamperate Bytecode? Oder mehr?

War es hilfreich?

Lösung

Eine statische Bibliothek ist nur eine Sammlung von Objektdateien. Wenn Sie ein Programm gegen eine statische Bibliothek kompilieren, wird der Objektcode für die von Ihrem Programm verwendeten Funktionen aus der Bibliothek in der ausführbaren Datei kopiert. Verknüpfung mit einer statischen Bibliothek wird keine Funktionen verursacht außerhalb der Bibliothek in Ihrem Code aufgenommen werden.

Andere Tipps

Ein .a-Datei ist im Grunde nur ein Bündel von .o-Dateien. Sie können zeigen, das das ar Werkzeug.

Zum Beispiel den Inhalt Ihrer Bibliothek angezeigt werden:

ar -t libsamplerate.a

Um eine .a-Datei von Grund auf neu zu erstellen:

ar -r tim.a *.txt

Nur der Objektcode für libsamplerate. Die statische Verknüpfung mit einer einzigen Bibliothek nicht alle Bibliotheken statisch gelinkte machen; das wäre schlecht.

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