Guten Tag, ich bin aktuell dabei mir ein STM32F4xx Template zu erstellen. Irgendwie habe ich aber noch ein merkwürdigen Fehler: Wenn ich die makefile aufrufe bekomme ich die Fehlermeldung: exit.c:(.text.exit+0x16): undefined reference to `_exit' collect2: error: ld returned 1 exit status Irgendetwas scheint mit dem Linker nicht zu stimmen. Nach etwas googlen wurde in einem Beitrag vorgeschlagen --specs=rdimon.specs zu den Linker-Flags zu packen. Das scheint aber nicht die Lösung zu sein: (.text+0xe0): undefined reference to `__end__' collect2: error: ld returned 1 exit status Bestimmt habe ich einen groben Schnitzer in irgendeiner Datei. Kann mir da jemand weiterhelfen? Beste Grüße.
Ach, er dachte ich will die exit() aus der stdlib.h benutzen. Danke! Ein Problem habe ich noch. Und zwar möchte ich die startup_stm32f429_439xx.s aus dem Verzeichnis libraries/CMSIS/Device/ST/STM32F4xx/Source/Templates/arm/ hinzufügen. > SRCS += startup_stm32f429_439xx.s > ... > CLFAGS += -Ilibraries/CMSIS/Device/ST/STM32F4xx/Source/Templates/arm > ... > OBJS := $(OBJS:.s=.o) Leider mekert make: make: *** Keine Regel vorhanden, um das Target »build/startup_stm32f429_439xx.o«, benötigt von »build/main.elf«, zu erstellen. Schluss. Ne Idee?
Willst du wirklich direkt das Template nehmen? Dann immer aufpassen, dass du es dort nicht änderst. Zumindest, wenn du die Dateien dort auch für andere Projekte nutzt. -I ist der Inkludepfad, wo der Präprozessor die Header sucht. Dies hat nichts mit dem Startup Assemblerfile zu tun. Du willst aber, dass make eine Quelle sucht für:
1 | $(OBJDIR)/%.o: %.s |
Probiere mal
1 | VPATH += libraries/CMSIS/Device/ST/STM32F4xx/Source/Templates/arm |
hum. Ich bin ehrlich gesagt etwas überfordert. Nun erhalte ich ganz viele Error: bad instruction Fehler. Ist vpath nicht auch eine sehr unsaubere Lösung?
arm ist falsch nimm mal: Probiere mal VPATH += libraries/CMSIS/Device/ST/STM32F4xx/Source/Templates/gcc
Lass die main einfach nicht ans Ende laufen, dann will der da auch keine Betriebssystemfunktionen aufrufen.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.