Einbetten von Datenressourcen in ausführbare Dateien mit GCC
Das Einbetten von Binärdaten in eine ausführbare Datei kann für die Verteilung tragbarer Anwendungen von großem Vorteil sein. Beispielsweise kann das Einbetten von Shader-Code als Binärdaten, anstatt ihn als Quellcode zu speichern, die Praktikabilität erheblich verbessern.
Um dies zu erreichen, bietet GCC zwei Hauptoptionen:
Verwendung von ld to Binärdateien einbetten
Der Linker ld ermöglicht die Konvertierung jeder Datei in ein Objekt Datei:
ld -r -b binary -o binary.o foo.bar # Subsequently link in binary.o
Dieser Ansatz erstellt Symbole wie _binary_foo_bar_start, _binary_foo_bar_end und _binary_foo_bar_size in der Objektdatei.
Nutzung der bin2c/bin2h-Dienstprogramme
Alternativ können Sie auch einen Mitarbeiter beschäftigen bin2c/bin2h-Dienstprogramme zum Umwandeln jeder Datei in ein Array von Bytes.
Beispiel für die Dateneinbettung mit ld
Unten finden Sie ein anschauliches Beispiel für das Einbetten von Daten mit ld :
#include <stdio.h> extern char _binary_foo_bar_start[]; // Address of the embedded resource extern char _binary_foo_bar_end[]; int main(void) { int iSize = (unsigned int)(&_binary_foo_bar_end - &_binary_foo_bar_start); printf("Size of embedded resource: %d\n", iSize); for (char* p = _binary_foo_bar_start; p != _binary_foo_bar_end; ++p) putchar(*p); return 0; }
Das obige ist der detaillierte Inhalt vonWie kann ich binäre Datenressourcen mithilfe von GCC in ausführbare Dateien einbetten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!