Heim > Backend-Entwicklung > C++ > Wie kann ich Ressourcen in meine ausführbare GCC-Datei einbetten?

Wie kann ich Ressourcen in meine ausführbare GCC-Datei einbetten?

Linda Hamilton
Freigeben: 2024-12-19 11:41:17
Original
949 Leute haben es durchsucht

How Can I Embed Resources into My GCC Executable?

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:

  1. Verwenden ld:

    • Verwenden Sie die Option -r von ld, um externe Dateien in Objektdateien zu konvertieren.
    • Verknüpfen Sie diese Objektdateien mit Ihrem Programm, um auf die Binärdaten zuzugreifen.
  2. Verwendung von bin2c/bin2h Dienstprogramme:

    • Konvertieren Sie externe Dateien in C-Arrays, die Binärdaten darstellen.
    • Fügen Sie diese Arrays in Ihren Code ein und greifen Sie bei Bedarf darauf zu.

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

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

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

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!

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