在尝试编译Nios II代码时,为什么会出现带有全局指针的链接器错误?-Altera-Intel社区-FPGA CPLD-ChipDebug

在尝试编译Nios II代码时,为什么会出现带有全局指针的链接器错误?

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):在函数`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:警告:无法到达(null)(在0x00e77e74)从全局指针(在0x00d217f0),因为偏移量(1402500)超出允许范围,-32678到32767。

解决/修复方法

要解决此问题,请在BSP中打开linker.x链接描述文件并编辑以下行:

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

删除最后的+ SIZEOF(.rwdata)指令,以正确定义.rwdata部分,如下所示:

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

此问题将在Nios II Software Build for Eclipse的未来版本中修复。

请登录后发表评论

    没有回复内容