Einbetten von Ressourcen in ausführbare Dateien mithilfe von GCC: Eine detaillierte Anleitung
Eingebettete C/C-Anwendungen erfordern oft die Einbindung externer Binärdaten, wie z Shader-Code, Schriftarten oder Bilder. Dies kann bei der Verteilung der Anwendung als einzelne ausführbare Datei zu Herausforderungen führen. GCC bietet Lösungen zur Vereinfachung dieses Prozesses.
Option 1: Verwendung der Objektdateigenerierung von ld
Eine Methode besteht darin, die Fähigkeit von ld zu nutzen, jede Datei in eine Objektdatei zu konvertieren. Dadurch können Sie die Binärdaten während der Verknüpfungsphase als Objekt in Ihre Anwendung integrieren. Verwenden Sie dazu den folgenden Befehl:
ld -r -b binary -o binary.o foo.bar # then link in binary.o
Option 2: bin2c/bin2h-Dienstprogramme verwenden
Eine andere Möglichkeit besteht darin, ein bin2c/bin2h-Dienstprogramm zum Konvertieren zu verwenden die externe Datei in ein Array von Bytes. Dieses Array kann dann als Konstante in Ihren Code eingefügt werden, sodass Sie bei Bedarf auf die Binärdaten zugreifen können.
Beispiel: Einbetten von Daten mit ld -r -b Binary
Betrachten Sie das folgende Beispiel, in dem wir eine Datei namens foo.bar haben, die Text enthält:
foo.bar: This is an example text.
Um diesen Text in unser C einzubetten Programm können wir den folgenden Code verwenden:
#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; }
Ermitteln der Ressourcengröße
Um die Größe der eingebetteten Ressource zu erhalten, können Sie den folgenden Code verwenden:
unsigned int iSize = (unsigned int)(&_binary_foo_bar_end - &_binary_foo_bar_start)
Fazit
GCC bietet mehrere Methoden zum Einbetten externer Binärdaten in ausführbare C/C-Dateien. Diese Techniken vereinfachen die Verteilung kompakter, eigenständiger Anwendungen, die Ressourcendateien in die ausführbare Datei selbst integrieren.
Das obige ist der detaillierte Inhalt vonWie kann ich mit GCC Ressourcen in meine ausführbare Datei einbetten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!