Heim > Backend-Entwicklung > C++ > Wie entferne ich mit GCC und ld nicht verwendete Symbole aus ausführbaren C/C-Dateien?

Wie entferne ich mit GCC und ld nicht verwendete Symbole aus ausführbaren C/C-Dateien?

DDD
Freigeben: 2024-12-28 07:55:14
Original
660 Leute haben es durchsucht

How to Strip Unused Symbols from C/C   Executables with GCC and ld?

So eliminieren Sie nicht verwendete Symbole in ausführbaren C/C-Dateien mithilfe von GCC und ld

Einführung

Die Optimierung der Größe ausführbarer Dateien kann in eingebetteten Systemen oder Ressourcen von entscheidender Bedeutung sein -beschränkte Umgebungen. Um dies zu erreichen, ist es wichtig, nicht verwendete Symbole aus der ausführbaren Datei zu entfernen.

GCC und ld Symbols Stripping

GCC und ld bieten Optionen zum Verwerfen nicht verwendeter Symbole während der Kompilierung und Verknüpfung:

GCC-Optionen

  • -fdata-sections: Trennt Code und Daten in unterschiedliche Abschnitte in jeder Übersetzungseinheit.
  • -ffunction-sections: Teilt Funktionen in einzelne Abschnitte auf.

ld-Optionen

  • -Wl,--gc-sections: Weist ld an, nicht referenzierte Elemente zu verwerfen Abschnitte.

Implementierung

Um nicht verwendete Symbole zu entfernen, folgen Sie diesen Schritten:

  1. Kompilieren Sie Quelldateien mit GCC mit -fdata-sections und -ffunction- Abschnitts-Flags.
  2. Verknüpfen Sie Objektdateien mithilfe von ld mit -Wl,--gc-sections Flag.

Beispiel

Angenommen, wir haben eine Datei test.cpp mit zwei Funktionen, von denen eine ungenutzt ist:

int use(int a);
int unused(int a);
Nach dem Login kopieren

Um die ungenutzte Funktion zu entfernen , kompilieren und verknüpfen Sie wie folgt:

gcc -Os -fdata-sections -ffunction-sections test.cpp -o test -Wl,--gc-sections
Nach dem Login kopieren

Dieser Befehl weist GCC an, Code und Daten in Abschnitte zu unterteilen und zu verwerfen nicht referenzierte Abschnitte, was zu einer ausführbaren Datei mit reduzierter Größe führt.

Das obige ist der detaillierte Inhalt vonWie entferne ich mit GCC und ld nicht verwendete Symbole aus ausführbaren C/C-Dateien?. 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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage