Geri schrieb:
>
1 | > c:/programs/yagarto/bin/../lib/gcc/arm-none-eabi/4.6.2/../../../../arm-none-eabi/bin/ld.exe:
|
2 | > warning: cannot find entry symbol _start; defaulting to 0000012c
|
3 | >
|
Im Linkerscript ist eine Label _start angegeben, das im Startup-Code
nicht existiert.
>
1 | > .\\obj_yagarto\\crt.o: In function `Reset_Handler':
|
2 | > C:\privat\YagEx1/crt.s:107: undefined reference to `_stack_end'
|
3 | > C:\privat\YagEx1/crt.s:107: undefined reference to `_data'
|
4 | > C:\privat\YagEx1/crt.s:107: undefined reference to `_bss_start'
|
5 | > C:\privat\YagEx1/crt.s:107: undefined reference to `_bss_end'
|
6 | >
|
Die im Startup-Code verwendeten Symbole passen nicht zu denen im
Linkerscript (z.B. startup: _bss_start, Linkerscript: _bss_start_)
Für den Anfang nicht Startup-Code und Linkerscript aus verschiedenen
Quellen mischen - das spart "Stress".
>
1 | > c:/programs/yagarto/bin/../lib/gcc/arm-none-eabi/4.6.2/../../../../arm-none-eabi/lib\libc.a(lib_a-abort.o):
|
2 | > In function `abort':
|
3 | > C:\msys\1.0\home\yagarto\newlib-build\arm-none-eabi\newlib\libc\stdlib/../../../../../newlib-1.19.0/newlib/libc/stdlib/abort.c:63:
|
4 | > undefined reference to `_exit'
|
5 | > c:/programs/yagarto/bin/../lib/gcc/arm-none-eabi/4.6.2/../../../../arm-none-eabi/lib\libc.a(lib_a-signalr.o):
|
6 | > In function `_kill_r':
|
7 | > C:\msys\1.0\home\yagarto\newlib-build\arm-none-eabi\newlib\libc\reent/../../../../../newlib-1.19.0/newlib/libc/reent/signalr.c:61:
|
8 | > undefined reference to `_kill'
|
9 | > c:/programs/yagarto/bin/../lib/gcc/arm-none-eabi/4.6.2/../../../../arm-none-eabi/lib\libc.a(lib_a-signalr.o):
|
10 | > In function `_getpid_r':
|
11 | > C:\msys\1.0\home\yagarto\newlib-build\arm-none-eabi\newlib\libc\reent/../../../../../newlib-1.19.0/newlib/libc/reent/signalr.c:96:
|
12 | > undefined reference to `_getpid'
|
13 | >
|
Wird mit Option "-nostartfiles" gelinkt? Standard abort-Funktion wird,
wenn richtig erinnert, von Standard Startup-Code der newlib genutzt
verursacht ihrerseits einige Abhängigkeiten. Normalerweise kann man mit
eigenem Startup-Code darauf verzichten oder gegebenfalls eine eigene
Funktion implementieren.