一致使用winarm + keil进行ARM开发,但是兼容性不好,例如有时候无法链接,而且WINARM已经很长时间没有更新了,故决定使用Sourcery G++ Lite Edition替换WINARM。
主要遇到了一下几个问题:
1,无法链接_isatty()函数。
把原来的isatty()函数改名为_isatty()即可。
2,(.ARM.exidx+0x0): undefined reference
(.ARM.exidx+0x0): relocation truncated to fit: R_ARM_PREL31 against `.text‘
链接脚本中添加:
.ARM.exidx :
{
__exidx_start = .;
*(.ARM.exidx* .gnu.linkonce.armexidx.*)
__exidx_end = .;
} >eflash
3,sh_link not set for section `.ARM.exidx‘
把上述脚本改为:
/* .ARM.exidx is sorted, so has to go in its own output section.*/
. = ALIGN(4);
__exidx_start = .;
PROVIDE(__exidx_start = __exidx_start);
.ARM.exidx :
{
/* __exidx_start = .; */
*(.ARM.exidx* .gnu.linkonce.armexidx.*)
/* __exidx_end = .; */
} >eflash
. = ALIGN(4);
__exidx_end = .;
PROVIDE(__exidx_end = __exidx_end);
时间: 2024-10-08 12:13:43