Heim > Backend-Entwicklung > C++ > Wie kann ich binäre Datenressourcen mithilfe von GCC in ausführbare Dateien einbetten?

Wie kann ich binäre Datenressourcen mithilfe von GCC in ausführbare Dateien einbetten?

Patricia Arquette
Freigeben: 2024-12-18 21:35:17
Original
452 Leute haben es durchsucht

How Can I Embed Binary Data Resources into Executables Using GCC?

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
Nach dem Login kopieren

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;
}
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage