Ich möchte unbenutzte Objektdateien in einer großen C-Anwendung mit vielen Bibliotheken identifizieren. Das Projekt ist im Laufe der Zeit sehr gewachsen und ich möchte nun nach Bibliotheken suchen, die nicht mehr benutzt werden, damit ich sie aus der Abhängigkeitsdatei entfernen kann. Ist es mit dem GCC-Linker möglich, ein Objekt zu identifizieren, das nicht verwendet wird?gcc Linker Liste der unbenutzten Objekte
Zum Beispiel, wenn ich eine Anwendung mit gcc kompiliere und sagen wir, keines der Symbole/Funktionen von library2 wird verwendet. Gibt es eine Möglichkeit, Informationen darüber zu erhalten, welche Objekte nicht verknüpft sind?
gcc library1.o library2.o main.o -o main.elf
Ich weiß, dass gcc die Compiler und Linker-Flags nicht verwendete Symbole zu entfernen hat:
-fdata-sections -ffunction-sections -Wl,--gc-sections
Doch diese Art und Weise Ich weiß nicht, welche Objekte von gcc entfernt wurden. Es wäre perfekt, wenn gcc eine Option hat, um eine Liste von Objekten zu erhalten, die nicht mit der Anwendung verknüpft sind.
Nur um zu erwähnen: Ich brauche es auf Objektdateibasis nicht auf Funktion/Symbolbasis!
Kennt jemand eine solche Option für gcc?
So konnte man nur schauen, was '.o' Dateien, die Sie nach dem Kompilieren und zu vergleichen, um Ihre Quelldateien finden. Ich weiß es nicht sicher, nur eine Idee ... –
Werfen Sie einen Blick auf [diese SO-Antwort] (http://stackoverflow.com/a/4449936/3436922). Es könnte helfen. – LPs
@R. Joiny Ja das ist es.Ich verwende bereits die Flags -fdata-sections -ffunction-sections -Wl, - gc-sections, die nicht verwendeten Code entfernen. Aber auf diese Weise kann ich nicht identifizieren, die Objekte zu entfernen und sie und aufräumen mein Buildsystem – franz86