Nios II GNU工具链从GCC 4.1.2升级到GCC 4.7.3

在ACDS版本13.1中,Nios®IIGNU工具链从GCC 4.1.2升级到GCC 4.7.3。升级到新工具链的用户需要注意下面列出的以下更改。

Nios II的具体变化:

  • 使用__buildin_custom_ *代替-mcustom- *#pragma可靠地生成Nios II浮点自定义指令(FPCI),与编译器优化级别和命令行标志无关。
    • 要将-mcustom- *#pragma用于Nios II浮点自定义指令(FPCI):
      • 必须使用-ffinite-math-only标志来生成fminsfmax FPCI
      • 必须使用优化(非-O0标志)来生成fsqrts FPCI
      • 在硬件中实现超越函数的用户必须使用-funsafe-math-optimizations标志为超越函数生成FPCI fsins()fcoss()ftans()fatans()fexps()flogs ()和相应的double - 精确功能
  • Pragma格式已从例如。 #pragma custom_fadds 253#pragma GCC target(“custom-fadds = 253”)和函数属性提供了另一种格式__attribute __((target(“custom-fadds = 253”)))
  • 使用-mel / -meb标志而不是-EL / -EB进行字节序设置。 Eclipse(SBTE)用户的软件构建工具必须重新生成BSP才能使此设置生效。
  • 不再支持-mverse-bitfields标志和reverse_bitfields pragma。
  • 必须使用-fstack-check标志而不是-mstack-check来启用堆栈检查。

海湾合作委员会的变化和改进:

  • nios2-elf-gcc GCC 4.7.3中的-Wa,-relax-all标志支持超过256MB限制的函数调用和程序。
  • 与优化一起使用时,使用asm运算符的内联汇编代码需要使用http://gcc.gnu.org/onlinedocs/gcc/Extended-Asm.html#中描述的机制声明从C导入并导出回C的值。 扩展Asm
  • GCC 4.7.3不支持预标准C ++标头。用标准C ++替换预标准C ++,例如。 #include <iostream.h>coutendl分别#include <iostream>std :: coutstd :: endl
  • 编译标志-Wl, - defsym foo = bar其中bar是未定义的符号,将在GCC 4.7.3中的链接器级别生成错误。 GCC 4.1.2不包括此检查。

GNU还提供了GCC4.7的移植指南,以记录常见问题: http ://gcc.gnu.org/gcc-4.7/porting_to.html

有关完整的GCC发行说明,请访问http://gcc.gnu.org/releases.html

编辑 重设标签(回车键确认) 标为违禁 关闭 合并 删除

提问于 2018-08-02 13:41:16 +0800

这个帖子被标记为一个社区wiki

这个帖子是一个wiki(维基). 任何一个积分 >500的人都可以完善它