Ich habe eine ausführbare Datei, die auf ein großes .a-Archiv verweist, das viele Funktionen enthält. Die ausführbare Datei verwendet nur einen kleinen Bruchteil der Funktionen in diesem Archiv, aber aus irgendeinem Grund zieht sie alles daraus und ist sehr groß Mein Verdacht ist, dass ein Teil der Funktionalität, die die ausführbare Datei verwendet, irgendwie auf etwas verweist, was sie nicht tun sollte, und das bewirkt, dass alles andere gezogen wird Ist es möglich, dass gcc mir sagt, welche Referenz ein bestimmtes Symbol in der ausführbaren Datei hinzufügt? Warum sonst kann das passieren?
Ich habe versucht, --gc-sections
ohne Effekt zu verwenden.
Ich habe versucht, --version-script
zu verwenden, um alle Symbole in der ausführbaren Datei lokal ohne Auswirkung zu machen
Ich bin nicht interessiert in -ffunction-sections
und -fdata-sections
, da es während Objektdateien ist, die ich verwerfen möchte, keine Funktionen.
Andere Antworten erwähnen -why_live
, aber das scheint nur für Darwin implementiert zu sein und ich bin in Linux x86_64