Heim >Backend-Entwicklung >C++ >Wie kann ich Ressourcen in meine ausführbare GCC-Datei einbetten?
Einbetten von Ressourcen in ausführbare Dateien mit GCC
Bei der Entwicklung von C/C-Anwendungen mit GCC kann es praktisch sein, externe Binärdaten direkt einzubetten die ausführbare Datei. Dies vereinfacht die Verteilung, da keine separaten Ressourcendateien erforderlich sind.
Einbettungsfunktionen von GCC
GCC bietet zwei Hauptansätze für die Ressourceneinbettung:
Verwenden ld:
Verwendung von bin2c/bin2h Dienstprogramme:
Beispiel mit ld
Hier ist ein detaillierteres Beispiel mit ld:
#include <stdio.h> extern char _binary_foo_bar_start[]; extern char _binary_foo_bar_end[]; int main(void) { printf("Address of start: %p\n", &_binary_foo_bar_start); printf("Address of end: %p\n", &_binary_foo_bar_end); for (char* p = _binary_foo_bar_start; p != _binary_foo_bar_end; ++p) { putchar(*p); } return 0; }
In diesem Beispiel wird eine Datei mit dem Namen foo.bar in eine Objektdatei (foo.bar.o) konvertiert mit:
ld -r -b binary -o foo.bar.o foo.bar
Der Linker bezieht dann beim Erstellen der ausführbaren Datei foo.bar.o ein und ermöglicht so den Zugriff auf die Binärdaten über die Symbole _binary_foo_bar_start und _binary_foo_bar_end.
Größenbestimmung
Um die Größe der eingebetteten Ressource zu bestimmen, verwenden Sie:
unsigned int iSize = (unsigned int)(&_binary_foo_bar_end - &_binary_foo_bar_start);
Das obige ist der detaillierte Inhalt vonWie kann ich Ressourcen in meine ausführbare GCC-Datei einbetten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!