Artikel-ID: 000079861 Inhaltstyp: Fehlerbehebung Letzte Überprüfung: 12.08.2012

Warum erhalte ich einen Linker-Fehler mit globalen Pointern, wenn ich versuche, meinen Nios II-Code zu kompilieren?

Umgebung

BUILT IN - ARTICLE INTRO SECOND COMPONENT
Beschreibung

An issue has been identified with the linker script generated by the 11.1 version of the Nios® II Board Support Package (BSP) generator.  The issue leads to link errors similar to the following:

/opt/altera/11.0sp1/nios2eds/bin/gnu/H-i686-pc-linux-gnu/bin/.. /lib/gcc/nios2-elf/4.1.2/.. /.. /.. /.. /nios2-elf/lib/libstdc .a (locale.o): In Funktion 'std::locale::id::_M_id() const':
/build/swbuild/SJ/nightly/11.0sp1/208/l32/work/ip/sopc/app/gnu/BUILD/gnu/build-0-gcc.nios2-elf.i686-pc-linux-gnu/nios2-elf/libstdc -v3/src/.. /.. /.. /.. /src/gcc-4.1/libstdc -v3/src/locale.cc:436: Warnung: Nicht in der Lage, (null) (bei 0x00e77e74) vom globalen Pointer (bei 0x00d217f0) zu erreichen, da der Offset (1402500) außerhalb des zulässigen Bereichs ist, -32678 bis 32767.

Lösung

Um dieses Problem zu beheben, öffnen Sie das Linker.x Linker-Skript im BSP und bearbeiten Sie die folgende Zeile:

.rwdata LOADADDR (.rodata) SIZEOF (.rodata) : AT ( LOADADDR (.rodata) SIZEOF (.rodata) SIZEOF (.rwdata) )

Entfernen Sie die letzte SIZEOF-Direktive (.rwdata), um den Abschnitt .rwdata wie folgt korrekt zu definieren:

.rwdata LOADADDR (.rodata) SIZEOF (.rodata) : AT ( LOADADDR (.rodata) SIZEOF (.rodata) )

Dieses Problem wird in einer zukünftigen Version der Nios II Software-Build-Tools für Eclipse behoben.

Zugehörige Produkte

Dieser Artikel bezieht sich auf 1 Produkte

Intel® programmierbare Geräte

Der Inhalt dieser Seite ist eine Kombination aus menschlicher und computerbasierter Übersetzung des originalen, englischsprachigen Inhalts. Dieser Inhalt wird zum besseren Verständnis und nur zur allgemeinen Information bereitgestellt und sollte nicht als vollständig oder fehlerfrei betrachtet werden. Sollte eine Diskrepanz zwischen der englischsprachigen Version dieser Seite und der Übersetzung auftreten, gilt die englische Version. Englische Version dieser Seite anzeigen.