10.09.2007

newlib : undefined reference to 'end'

使用newlib,因為使用到vsprintf( ),所以 link 的時候出現
In function '_sbrk':
syscalls.c : undefined reference to 'end'
查一下,sbrk( )是syscall 用來作heap memory managemet 的function call,他會需要知道heap region的end address。
所以需要由linker 告知 heap end address (end).

所以修改ldscript,在heap end 處定義 mark 'end' :
 PRIVODE ( end = . ) ; 
但是要注意,要為heap留位置。

loading script中 ' . ' 的意思代表目前ram 的位址。
所以用..
 .  += 1000;
就可以將 目前ram位置向後移動 1000 byte (也就是空出1000 bytes)

沒有留言: