libgcc.a für cortex-M0 und cortex-M3

Gast #4002924
Lesenswert?
• ▲
▼
hallo,

wie sagt man dem Linker, welche Architektur mit "-lgcc" gemeint ist? Der 
arm-none-eabi-gcc bringt ja diverse libgcc.a für armv6-m, armv7-m usw. 
mit. Und mit "-mcpu" erzeugt der Compiler auch passenden Code. Nur der 
Linker baut immer eine falsche lib ein.

Als Notlösung funktioniert
1
-lgcc -L/usr/lib/gcc/arm-none-eabi/4.8/armv6-m/
Aber das kann's ja nicht sein, vor allem weil es von der gcc-Version 
abhängt. Eine lokale Kopie der lib in meinem Programmverzeichnis hätte 
das gleiche Problem. Ich könnte die gcc-Installation manipulieren, aber 
ich will gleichzeitig für M0 und M3 übersetzen.

Außer meinem Makefile gibt es hier nur die Debian-Pakete 
binutils-arm-none-eabi 2.24.51.20140604-3+5 und gcc-arm-none-eabi 
4.8.3-9+11. Ich kann also nicht einmal einer IDE die Schuld geben ;)

Oder soll ich die M0-Chips auslöten und durch M4 ersetzen? Sind ja nur 
10 LQFP-32.
Gast #4003078
Lesenswert?
• ▲
▼
Ich sehe 3 Unterschiede zu meinem Makefile.

1. meine LDFLAGS haben nur den Eintrag:
LDFLAGS = -Wl,--gc-sections -Wl,-Map=$(PROJ_NAME).map

2. meine CFLAGS haben zusätzlich die CPU Angabe, deine wäre:
-DSTM32F051

3. für die elf Datei (linker) nehme ich LDFLAGS und CFLAGS:
$(CC) $(CFLAGS) $(LDFLAGS) ...
Gast #4003103
Lesenswert?
• ▲
▼
hp-freund schrieb:

> Ich sehe 3 Unterschiede zu meinem Makefile.
Adlerauge!

> 1. meine LDFLAGS haben nur den Eintrag:
> LDFLAGS = -Wl,--gc-sections -Wl,-Map=$(PROJ_NAME).map

"-Wl,-T$(LDSCRIPT)" brauche ich doch für mein Linker Script und mit 
BUILD_TIME definiere ich ja nur eine Konstante, so eine Art automatische 
Versionnummer

> 2. meine CFLAGS haben zusätzlich die CPU Angabe, deine wäre:
> -DSTM32F051

wenn das ein Problem wäre, würde ja der Compiler meckern

> 3. für die elf Datei (linker) nehme ich LDFLAGS und CFLAGS:
> $(CC) $(CFLAGS) $(LDFLAGS) ...

aber das war's, mit den CFLAGS kommt das -mcpu mit und schon geht's.
Herzlichen Dank! Du hast 10 unschuldige STM32F051K6 gerettet :)

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.