在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标志来生成fmins和fmax 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> , cout , endl分别带#include <iostream> , std :: cout和std :: 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 。
没有回复内容