Forum: Compiler & IDEs Windows 11, AVR-GCC: Pfade setzen


von Markus S. (markus7)


Lesenswert?

Guten Abend,

diese toolchain habe ich auf ein Windows 11 Notebook geladen und 
ausgepackt:

https://blog.zakkemble.net/avr-gcc-builds/


Verzeichnisstruktur:
1
17/05/2023  19:03    <DIR>          .
2
17/05/2023  06:10    <DIR>          ..
3
17/05/2023  19:03    <DIR>          avr
4
17/05/2023  19:03    <DIR>          bin
5
17/05/2023  19:03    <DIR>          include
6
17/05/2023  19:03    <DIR>          lib
7
17/05/2023  19:03    <DIR>          libexec
8
17/05/2023  06:08               253 README.txt
9
17/05/2023  19:03    <DIR>          share
10
               1 File(s)            253 bytes
11
               8 Dir(s)  84,776,759,296 bytes free


Ein (fehlgeschlagener) Aufruf von make:
1
avr-gcc -O -g -Wall -ffreestanding -mmcu=atmega128   -c -o twitest.o twitest.c
2
avr-gcc: fatal error: cannot read spec file 'device-specs/specs-atmega128': No such file or directory
3
compilation terminated.
4
make: *** [<builtin>: twitest.o] Error 1


Makefile:
1
#
2
# $Id$
3
#
4
CC= avr-gcc
5
#MCU=atmega8
6
#MCU=atmega16
7
#MCU=atmega32
8
#MCU=atmega163
9
#MCU=atmega323
10
MCU=atmega128
11
12
CFLAGS=  -O -g -Wall -ffreestanding -mmcu=$(MCU)
13
.SUFFIXES: .s .bin .out .hex .srec
14
.c.s:
15
  $(CC) $(CFLAGS) -S $<
16
.S.o:
17
  $(CC) $(ASFLAGS) -c $<
18
.o.out:
19
  $(CC) $(CFLAGS) -o $@ $<
20
.out.bin:
21
  avr-objcopy -O binary $< $@
22
.out.hex:
23
  avr-objcopy -O ihex $< $@
24
.out.srec:
25
  avr-objcopy -O srec $< $@
26
all:  twitest.bin
27
OBJS=twitest.o
28
twitest.out: $(OBJS)
29
  $(CC) -o twitest.out $(CFLAGS) $(LDFLAGS) $(OBJS) $(LDLIBS)
30
clean:
31
  rm -f *~ *.out *.bin *.hex *.srec *.s *.o *.pdf *core

Wie und wo müssen die Pfade eingerichtet werden, damit make alles 
findet, was zum Compilieren und Linken gehört?

Mit freundlichen Grüßen

Markus

von Johann L. (gjlayde) Benutzerseite


Lesenswert?

Kannst du noch -v zu den avr-gcc Optionen dazugeben und die Ausgabe 
posten?

: Bearbeitet durch User
von Markus S. (markus7)


Lesenswert?

Die Option habe ich im makefile hinzugefügt.

Hier die Ausgabe:
1
avr-gcc -v -O -g -Wall -ffreestanding -mmcu=atmega128   -c -o twitest.o twitest.c
2
Using built-in specs.
3
Reading specs from device-specs/specs-atmega128
4
avr-gcc: fatal error: cannot read spec file 'device-specs/specs-atmega128': No such file or directory
5
compilation terminated.
6
make: *** [<builtin>: twitest.o] Error 1

von Johann L. (gjlayde) Benutzerseite


Lesenswert?

hmmm, kann sein dass Windows irgendwas komisches mit den Pfaden macht?

Im Installationsverzeichnis sollte es Dateien geben wie
1
lib/gcc/avr/<version>/device-specs/specs-atmega128
wobei <version> die Version des Compilers ist, für den Download wohl 
12.1.0.

Auf jeden Fall würde ich sicherstellen, dass Pfade keine Sonderzeichen 
oder Leerzeichen enthalten.

von Veit D. (devil-elec)


Lesenswert?

Hallo,

ich würde an deiner Stelle alle benötigten Pfade zu make und avr-gcc in 
die Systemumgebungsvariable eintragen.

Taskleiste > Suchfeld > Systemumgebungsvariablen > Umgebungsvariablen > 
oberes Feld > Zeile Path bearbeiten ...
Jeder Pfad eine neue Zeile.

von William N. (william_n)


Lesenswert?

So legen Sie Pfade für AVR-GCC in Windows 11 fest:

1.Öffnen Sie die Systemeinstellungen von Windows 11.
2.Navigieren Sie zu „Erweiterte Systemeinstellungen“ und klicken Sie 
darauf.
3.Klicken Sie in den erweiterten Systemeigenschaften auf 
„Umgebungsvariablen“.
4.Fügen Sie Benutzervariablen für benutzerdefinierte Pfade und 
Systemvariablen für systemweite Pfade hinzu oder bearbeiten Sie sie.
5.Stellen Sie sicher, dass Sie die richtigen Pfade für AVR-GCC 
festlegen, einschließlich des Compilers, der Header-Dateien und der 
Bibliotheken.
6.Klicken Sie auf „OK“, um die Änderungen zu speichern.

Durch die korrekte Einstellung der Pfade stellen Sie sicher, dass Ihr 
System die notwendigen Ressourcen für AVR-GCC finden kann. Beachten Sie, 
dass es sich hierbei um allgemeine Schritte handelt und spezifische 
Details je nach Ihrem Windows 11-Setup und Ihrer Version variieren 
können. Für weitere Informationen https://nachrichtenmorgen.de/

von C-hater (c-hater)


Lesenswert?

William N. schrieb:

> So legen Sie Pfade für AVR-GCC in Windows 11 fest:
[...blabla...]

Das funktioniert so natürlich nur maximal so lange, wie man es nur mit 
einer Version der avr-gcc Toolchain zu tun hat. Bestenfalls...

Oft genug stören aber auch bei nur einer Version von avr-gcc 
gleichnamige Kommandos anderer Toolchains.

Es ist also definitiv eine gute Idee, die Pfade nicht global zu 
setzen, sondern nur lokal für den Kontext, in dem man die 
"Hauptanwendung" startet (typisch also eine IDE oder einen zu einer 
Quasi-IDE aufgeblasenen Editor).

von Johann L. (gjlayde) Benutzerseite


Lesenswert?

William N. schrieb:
> Durch die korrekte Einstellung der Pfade stellen Sie sicher, dass Ihr
> System die notwendigen Ressourcen für AVR-GCC finden kann.

avr-gcc selbst wird ja gefunden.

Damit die mitgelieferten device-specs gefunden werden, sind keine extra 
Pfade nötig.  Wäre auch blöd wenn's nicht so wäre.

Bislang gibt's 2 Möglichkeiten:

1) Die Installation ist defekt.  Eher unwahrscheinlich, weil Zak Kimble 
schon länger Compiler zur Verfügung stellt.

2) Die Pfade in Windows sind nicht so, wie sie scheinen.

Als erstet würd ich aber sicherstellen, dass in den Installatonspfaden 
keine Zeichen wie " " oder "(" etc. drinne sind.

EDIT:

Gerade getestet: Zumindest unter Linux sind Sonderzeichen im 
Installatonspfak kein Problem.

Was ist die Ausgabe von "avr-gcc -v" ohne weitere Optionen?

: Bearbeitet durch User
von C-hater (c-hater)


Lesenswert?

Johann L. schrieb:

> 2) Die Pfade in Windows sind nicht so, wie sie scheinen.

Ja, wenn einer wirklich keine Ahnung hat, ist natürlich immer Windows 
schuld...

von Markus S. (markus7)


Lesenswert?

Wird make über einen relativen Pfad aus dem Verzeichnis des Quelltextes 
und dem Makefile aufgerufen funktioniert es :)

Zum Beipiel:
1
..\bin\make

Vielen Dank für Eure (konstruktiven) Beiträge, die mich auf den rechten 
Pfad geführt haben.

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.