Forum: Compiler & IDEs collect2.exe: error: ld returned 1 exit status


von Sylvian C. (scurrent)


Angehängte Dateien:

Lesenswert?

hallo zusammen,

ich bin Neueinsteiger in der Embedded-Entwicklung und will den ARM 
Cortex-M4 auf einem STM32F429 Discovery in C Programmieren. Dazu nutze 
ich Eclipse Luna für C/C++ Entwickler mit der ARM-Toolchain auf einem 
Windows 7 Rechner. Beim Linken eines einfachen Makefile-Projekt tritt 
ein Fehler mit den folgenden Details auf:

13:39:07 **** Incremental Build of configuration Default for project 
TEMP ****
make all
'Building target: _TEMP_'
'Invoking: Cross ARM C Linker'
arm-none-eabi-gcc -mcpu=cortex-m4 -mthumb -O0 -Wall  -g -Xlinker 
--gc-sections -Wl,-Map,"_TEMP_.map" -o "_TEMP_" 
./startup/startup_stm32f429_439xx.o  ./source/main.o
c:/gnu_tools_arm_embedded/4.8_2014q3/bin/../lib/gcc/arm-none-eabi/4.8.4/ 
../../../../arm-none-eabi/lib/armv7e-m\libg.a(lib_a-exit.o):  In 
function `exit':
exit.c:(.text.exit+0x16): undefined reference to `_exit'
c:/gnu_tools_arm_embedded/4.8_2014q3/bin/../lib/gcc/arm-none-eabi/4.8.4/ 
../../../../arm-none-eabi/lib/armv7e-m\libg.a(lib_a-sbrkr.o):  In 
function `_sbrk_r':
sbrkr.c:(.text._sbrk_r+0xc): undefined reference to `_sbrk'
c:/gnu_tools_arm_embedded/4.8_2014q3/bin/../lib/gcc/arm-none-eabi/4.8.4/ 
../../../../arm-none-eabi/lib/armv7e-m\libg.a(lib_a-writer.o):  In 
function `_write_r':
writer.c:(.text._write_r+0x10): undefined reference to `_write'
c:/gnu_tools_arm_embedded/4.8_2014q3/bin/../lib/gcc/arm-none-eabi/4.8.4/ 
../../../../arm-none-eabi/lib/armv7e-m\libg.a(lib_a-closer.o):  In 
function `_close_r':
closer.c:(.text._close_r+0xc): undefined reference to `_close'
c:/gnu_tools_arm_embedded/4.8_2014q3/bin/../lib/gcc/arm-none-eabi/4.8.4/ 
../../../../arm-none-eabi/lib/armv7e-m\libg.a(lib_a-fstatr.o):  In 
function `_fstat_r':
fstatr.c:(.text._fstat_r+0xe): undefined reference to `_fstat'
c:/gnu_tools_arm_embedded/4.8_2014q3/bin/../lib/gcc/arm-none-eabi/4.8.4/ 
../../../../arm-none-eabi/lib/armv7e-m\libg.a(lib_a-isattyr.o):  In 
function `_isatty_r':
isattyr.c:(.text._isatty_r+0xc): undefined reference to `_isatty'
c:/gnu_tools_arm_embedded/4.8_2014q3/bin/../lib/gcc/arm-none-eabi/4.8.4/ 
../../../../arm-none-eabi/lib/armv7e-m\libg.a(lib_a-lseekr.o):  In 
function `_lseek_r':
lseekr.c:(.text._lseek_r+0x10): undefined reference to `_lseek'
c:/gnu_tools_arm_embedded/4.8_2014q3/bin/../lib/gcc/arm-none-eabi/4.8.4/ 
../../../../arm-none-eabi/lib/armv7e-m\libg.a(lib_a-readr.o):  In 
function `_read_r':
readr.c:(.text._read_r+0x10): undefined reference to `_read'
collect2.exe: error: ld returned 1 exit status
make: *** [_TEMP_] Error 1

13:39:07 Build Finished (took 170ms)

Leider gibt es zu der Fehlermeldung bei Google zu viele Anfragen mit 
verschiedenen Ursachen. Kann mir bitte jemand helfen? Falls noch 
Informationen benötigt werden - einfach fragen ;)

Danke

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Diese Funktionen sind die Backends, die von den entsprechenden
Funktionen der Standardbibliothek aufgerufen werden.

Die musst du selbst mit Leben ausfüllen, denn nur du weißt, woher
ein read() bspw. etwas lesen soll.

(Disclaimer: allzu tief stecke ich in den ARM-Dingen selbst noch nicht
drin, das ist aber, wie ich es verstanden habe.)

von Oliver S. (oliverso)


Lesenswert?

Genaueres steht in der Doku. Das dürfte in dem Fall die der newlib sein. 
Und weil die schon sehr lange benutzt wird, wurde zu dem "Problem" auch 
schon wirklich alles geschrieben. Google weiß Bescheid...

Oliver

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Oliver S. schrieb:
> auch schon wirklich alles geschrieben. Google weiß Bescheid

Naja, dürfte hier eher eine Frage der passenden Suchbegriffe sein,
damit man von diesem „alles“ einigermaßen schnell auf die fürs Thema
relevanten Antworten kommt.

von Oliver S. (oliverso)


Lesenswert?

Ein kurzer Versuch mit "_exit _sbrk" zeigt schon fast 100% Trefferquote. 
So schwierig war das jetzt nicht ;)

Oliver

von Sylvian C. (scurrent)


Lesenswert?

Vielen Dank - der erste Beitrag hat mir sehr geholfen. Ich arbeite ohne 
bestehende libs. Der Linker hat Funktionen gesucht die ich nicht brauche 
also habe ich (-nostdlib) vor dem Linkeraufruf im makefile gesetzt.

von Johann L. (gjlayde) Benutzerseite


Lesenswert?

Jörg Wunsch schrieb:
> Diese Funktionen sind die Backends, die von den entsprechenden
> Funktionen der Standardbibliothek aufgerufen werden.

Solch feine Sachen gibt's in der AVR-LibC leider nicht :-(

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.