Forum: Compiler & IDEs STM32 Kompilierungsschwierigkeiten


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Scott F. (scott_f)


Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen,
ich lese gerade das Buch "Beginning STM32" von Warren Gay und versuche 
die Beispiele (mit libopencm3) mit Cygwin unter Windows zu kompilieren - 
wie auch im Buch beschrieben.
Nun habe ich das Problem, dass obwohl der Pfad in der Makedatei 
angegeben ist, die Dateien nicht gefunden werden. Der ganze Pfad zu den 
Dateien ist:
/home/root/STM32/stm32f103c8t6/libopencm3/include/libopencm3/cm3/scb.h

Beim Kompilieren sieht man ebenfalls, dass 
-I/home/root/STM32/stm32f103c8t6/libopencm3/include angegeben wurde - 
ich habe es auch versucht die benötigten Header-Dateien in das 
Verzeichnis der Quelldateien zu kopieren und #include<datei.h> in 
#include"datei.h" zu ändern. Das funktioniert, aber es sind viel zu 
viele Dateien die ich ändern und kopieren müsste.

Was könnte hier der Fehler sein?

Danke und viele Grüße,
Scott

Hier ist die Ausgabe:
[~/STM32/stm32f103c8t6]
$ make
make -C rtos/libwwg
make[1]: Entering directory '/home/root/STM32/stm32f103c8t6/rtos/libwwg'
make -w -C ./src
make[2]: Entering directory '/home/root/STM32/stm32f103c8t6/rtos/libwwg/src'
arm-none-eabi-gcc -Os -g -std=c99 -mthumb -mcpu=cortex-m3 -msoft-float -mfix-cortex-m3-ldrd -Wextra -Wshadow -Wimplicit-function-declaration -Wredundant-decls -Wmissing-prototypes -Wstrict-prototypes -fno-common -ffunction-sections -fdata-sections -I/home/root/STM32/stm32f103c8t6/libopencm3/include -I/home/root/STM32/stm32f103c8t6//rtos/libwwg/include -I./rtos -I. -MD -Wall -Wundef -DSTM32F1 -I/home/root/STM32/stm32f103c8t6/libopencm3/include -I/home/root/STM32/stm32f103c8t6//rtos/libwwg/include -o usbcdc.o -c usbcdc.c
usbcdc.c:7:10: fatal error: libopencm3/cm3/scb.h: No such file or directory
7 | #include <libopencm3/cm3/scb.h>
| ^~~~~~~~~~~~~~~~~~~~~~
compilation terminated.
make[2]: *** [../../../Makefile.incl:111: usbcdc.o] Error 1
make[2]: Leaving directory '/home/root/STM32/stm32f103c8t6/rtos/libwwg/src'
make[1]: *** [Makefile:8: all] Error 2
make[1]: Leaving directory '/home/root/STM32/stm32f103c8t6/rtos/libwwg'
make: *** [Makefile:41: libwwg] Error 2

von pegel (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Bist Du beim installieren in den falschen Pfad geraten?

Ich habe es mal unter Linux probiert:
cd ~
mkdir Apress
cd Apress/
git clone https://github.com/Apress/Beg-STM32-Devel-FreeRTOS-libopencm3-GCC.git
cd Beg-STM32-Devel-FreeRTOS-libopencm3-GCC/
git clone https://github.com/libopencm3/libopencm3.git
make

Damit wird alles richtig übersetzt.

von pegel (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Noch einmal präziser:

wenn Du ein spezielles Projekt compilieren möchtest, musst Du das in das 
makefile im Pfad "Beg-STM32-Devel-FreeRTOS-libopencm3-GCC/" eintragen.
Dann das make auch in diesem Pfad aufrufen.

z.B.: PROJECTS = miniblink uart uarthwfc hse rtos/oled

Das compiliert dann all diese Projekte.
Nur beim "make clean" habe sie gespart, es wird nicht alles erstellte 
auch wieder gelöscht.

von Scott F. (scott_f)


Bewertung
0 lesenswert
nicht lesenswert
Vielen Dank für deine Antwort.

Ich habe endlich das Problem gefunden. Es gab bei Cygwin Probleme mit 
den Dateipfaden. Damit der Compiler die Pfade findet, musste ich in der 
Makedatei statt dem Linux Pfad Format home/folder/, alle Pfade ins 
Windows Format umschreiben D:\home\folder. Warum davor manche Dateien 
gefunden wurden und andere nicht ist mir bis heute nicht klar.

von Kurt P. (kurtcontroller)


Bewertung
0 lesenswert
nicht lesenswert
Hi Leute,

ich beschäftige mit stm32f103 und stm32f072. Reine Hobbyanwendung.
Es macht immer wieder Spaß im hohen Alter noch zu Lernen.

Diese Hardware habe ich.
Blue-pill, black-pill und NUCLEO-64 STM32F103, STM32F072.

Nur beim "make clean" habe sie gespart, es wird nicht alles erstellte
auch wieder gelöscht.
Nöö, so geht es "make clobber"

Ich habe es mal unter Linux armhf probiert:
ODROID-XU4 BS ARMBIAN

make -C rtos/libwwg
make[1]: Entering directory 
'/home/kurt/Apress/Beg-STM32-Devel-FreeRTOS-libopencm3-GCC/rtos/libwwg'
make -w -C ./src
make[2]: Entering directory 
'/home/kurt/Apress/Beg-STM32-Devel-FreeRTOS-libopencm3-GCC/rtos/libwwg/s 
rc'
arm-none-eabi-gcc -Os -g -std=c99 -mthumb -mcpu=cortex-m3 -msoft-float 
-mfix-cortex-m3-ldrd -Wextra -Wshadow -Wimplicit-function-declaration 
-Wredundant-decls -Wmissing-prototypes -Wstrict-prototypes -fno-common 
-ffunction-sections -fdata-sections 
-I/home/kurt/Apress/Beg-STM32-Devel-FreeRTOS-libopencm3-GCC/libopencm3/i 
nclude 
-I/home/kurt/Apress/Beg-STM32-Devel-FreeRTOS-libopencm3-GCC//rtos/libwwg 
/include  -I./rtos -I.  -MD -Wall -Wundef -DSTM32F1 
-I/home/kurt/Apress/Beg-STM32-Devel-FreeRTOS-libopencm3-GCC/libopencm3/i 
nclude 
-I/home/kurt/Apress/Beg-STM32-Devel-FreeRTOS-libopencm3-GCC//rtos/libwwg 
/include   -o getline.o -c getline.c
getline.c:5:20: fatal error: memory.h: No such file or directory
 #include <memory.h>
                    ^
compilation terminated.

Die Datei memory.h fehlt. Ich in der Datei getline.c die //#include 
"memory.h"
auskommentiert. Muss noch geprüft werden.

@ Scott F.
Wie ist das Buch nach den ersten Übungen.
Ich möchte es vielleicht kaufen.

Schau mal im Pfad
/home/user/Apress/Beg-STM32-Devel-FreeRTOS-libopencm3-GCC//rtos/libwwg/i 
nclude
hier müsste memory.h sein?

Schöne Grüße vom Rhein
Gruß
Kurt

von Kurt P. (kurtcontroller)


Bewertung
0 lesenswert
nicht lesenswert
Fehler gefunden.
When compiling and you get the error message getline.c:5:20: fatal 
error: memory.h: No such file or directory, at the line where it is 
coded as "#include <memory.h>", you may have to change that to "#include 
<string.h>" instead. The compiler folks have sometimes moved the header 
file.


Nachtrag:

#include <string.h> anstatt #include <memory.h> und es funktioniert.

Gruß
Kurt

: Bearbeitet durch User

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.