2015-07-16 5 views
5

Verwendung avr-gcc und versucht, eine Größe von binären zu reduzieren unter Verwendung von -ffunction Schnitten und -fdata Schnitten beim Kompilieren und Verbinden mit --gc -Sektionen. Die .lds Datei enthält nichts:avr-ld Fehler: „Gc-Abschnitte erfordern entweder einen Eintrag oder ein undefiniertes Symbol“

SEKTIONEN { }

Dieser Fehler tritt auf, wenn ein Teil viele .o die in ein .a Verknüpfung, die dann später verwendet werden, um die Build abzuschließen.

Ich habe einige andere Beiträge gelesen, die diese Optionen diskutieren, aber nichts, das das Problem ENTRY() verdeutlicht. Ihre Notwendigkeit scheint in der partiellen Phase nicht gegeben zu sein, bevor versucht wird, die Codegröße zu reduzieren (ein existierendes Linker-Skript verwendet es offensichtlich nicht).

Dokumentation heißt es: --gc-sectionts

„Diese Option kann eingestellt werden, wenn ein Teil-Link tut (aktiviert mit der Option‚-r‘) In diesem Fall ist die Wurzel von Symbolen explizit entweder angegeben gehalten werden muß. durch eine '--entry' oder '--undefined' Option oder durch einen ENTRY-Befehl im Linker-Skript. "

Hier ist ich verloren. Wir würden uns über einige weitere Erläuterungen zur Verwendung von --undefined, --entry oder ENTRY cmd im Linkerscript freuen, um dieses Problem zu lösen.

+0

So sieht es aus wie niemand einen Vorschlag hat. Ich übersprungen --gc-Abschnitte in partiellen Link-Phasen und verwenden Sie nur diese Linker-Option in der letzten Phase der Verknüpfung. Dies führt zu anderen Problemen, wo die Dinge aus der Binärdatei entfernt werden. Aber ich werde eine neue Frage dazu stellen. –

Antwort

-1

Ich hatte ein ähnliches Problem und gab auf. Am Ende habe ich mit der Option -fwhole-program kompiliert, die die Größe meines Bootloaders erheblich reduziert hat.

Verwandte Themen