Forum: Compiler & IDEs AVR-GCC selbst bauen - Unter Linux für Windows?


von N. G. (newgeneration) Benutzerseite


Lesenswert?

Hallo Forum,

kleine Frage:

Wie kann ich am einfachsten den GCC fürs target AVR bauen?
Imho müsste es am einfachsten unter Linux gehen. Also mithilfe von 
mingw32.
(Unter 1) steht auch wie es unter Windows gehen sollte, aber das 
erscheint mir um einiges Umständlicher und ich habe normalerweise kein 
Problem mit Linux)

Also schnell Ubuntu in ner Virtuellen Maschine installiert und auch 
ming32 (x86_64-w64-ming32-gcc etc.)
nur bin ich mir nicht sicher, wie ich damit jetzt die Windows-Binaries 
bauen kann.
Ich dachte zuerst an
1
PREFIX=$HOME/local/avr
2
PATH=$PATH:$PREFIX/bin
3
../binutils-2.25/configure --prefix=$PREFIX --target=avr --disable-nls --host x86_64-w64-ming32
4
../gcc-5.3.0/configure --prefix=$PREFIX --target=avr --enable-languages=c,c++  --disable-nls --disable-libssp --with-dwarf2 --host x86_64-w64-ming32
5
etc.
was mir aber mit der Warnung quittiert wird:
1
configure: WARNING: If you wanted to set the --build type, don't use --host.
2
    If a cross compiler is detected then cross compile mode will be used.
Also sollte ich wohl --build nehmen. Damit kommt allerdings folgender 
Fehler:
1
checking for library containing strerror... configure: error: Link tests are not allowed after GCC_NO_EXECUTABLES.

Also wie lauten die richtigen Befehle oder wie macht man es richtig?

mit freundlichen Grüßen,
N.G.

PS: die Tools sind:
avrdude aus dem aktuellen svn-trunk
avr-libc aus dem aktuellen svn-trunk
binutils-2.25
gcc-5.3.0

1) http://www.nongnu.org/avr-libc/user-manual/install_tools.html

von Johann L. (gjlayde) Benutzerseite


Lesenswert?

Als erstet benötigst du einen mingw32-gcc im Pfad, den hast du ja wohl 
schon.

Dann benötigst du eine native Cross-Toolchain, also einen avr-gcc 
inclusive Binutils und avr-libc, und zwar Version 5.3.0; am besten auch 
im Pfad. Hast du den?

Und wiedo überhaupt 5.3.0 und nicht 5.3.1.  5.3.0 ist doch nur ein 
Release Candidate?

von Johann L. (gjlayde) Benutzerseite


Lesenswert?

Hier mal meine gcc configure für den Canadian Cross:
1
../../gcc.gnu.org/gcc-5-branch/configure --target=avr --disable-nls --prefix=/local/gnu/install/gcc-5-avr-mingw32 --host=i386-mingw32 --build=i686-linux-gnu --enable-languages=c,c++,lto --with-gnu-as --with-gnu-ld --disable-shared --with-dwarf2

Außerdem kommt

1a) configure der native avr-binutils
1b) build der native avr-binutils
1c) install der native avr-binutils

2a) run ./contrig/download_prerequisites  (nach cd GCC_SOURCE)
2b) configure des native avr-gcc mit gleicher prefix wie 1a)
2c) build des native avr-gcc
2d) install des native avr-gcc

3a) bootstrap avr-libc von SVN trunk
3b) configure avr-libc mit prefix wie 1a)
3c) build avr-libc
3d) install avr-libc

===================================================

avr-gcc von oben in pfad aufnehmen

4a) configure der canadian avr-binutils, gleiche quellen wie 1)
4b) build der canadian avr-binutils
4c) install der canadian avr-binutils

5a) configure des canadian avr-gcc, quellen wie 2) prefix wie 4)
5b) build des canadian avr-gcc
5c) install des canadian avr-gcc

6a) gehe ins build der avr-libc von 3)
6b) make install prefix=`prefix wie 4) bzw. 5)`

configure IMMER außerhalb des Quellbaums

von Fridtjof Gärtner (Gast)


Lesenswert?

Könntest du die 5.3.1 für Windows nach getaner Arbeit für die 
Allgemeinheit zur Verfügung stellen? Dann bräuchte nicht jeder das Rad 
neu erfinden. Vielen Dank. :o)

von N. G. (newgeneration) Benutzerseite


Lesenswert?

Fridtjof Gärtner schrieb:
> Könntest du die 5.3.1 für Windows nach getaner Arbeit für die
> Allgemeinheit zur Verfügung stellen? Dann bräuchte nicht jeder das Rad
> neu erfinden. Vielen Dank. :o)

Ja, natürlich. Mir stellt sich gerade nur die Frage: Wo?
Muss mal noch etwas überlegen.

Davor muss ich aber erst mal noch den Compiler fertig bauen (dauert auf 
meinem Rechner + virtuelle Maschine ewig) und dann noch testen.

Aber soweit schaut der build nach Johanns Anleitung gut aus.
Ich melde mich wenn es fertig und getestet ist

: Bearbeitet durch User
von N. G. (newgeneration) Benutzerseite


Lesenswert?

Okay, zum aktuellen Stand:

Danke Johann, deine Anleitung war Gold wert!!!
Es hat funktioniert.
Ich habe mir erlaubt diese ein wenig ausführlicher zu schreiben und 
unter AVR-GCC hier im Forum zu veröffentlichen.
Eventuell schaust du ja mal kurz drüber, ob sich nicht doch noch ein 
Fehler eingeschlichen hat, ich habe die Anleitung nämlich gerade erst, 
also schon einige Stunden nach dem eigentlichen Erstellen, 
geschrieben...

Ich habe mal kurz einige meiner Programme kompiliert und es kam zu 
keinen Fehlern, schon mal gut.
Danach habe ich mal mit csmith (ein Programm, das per Zufall C-Programme 
erzeugt) einige Programme getestet, von 1000 Durchläufen kam es nur bei 
4 zu folgendem Fehler: address 0x810036 of a.out section `.bss´ is not 
within `data´
Also nur ein Fehler, dass der Speicher zu klein war.
(Dazu kamen noch ca. 10000000 und 1 Fehler dass die Bitbreite bei 
structs größer war als ihr Typ bits hatte (etwas so: struct x {unsigned 
y:30}; was auf dem AVR natürlich zum Fehler führt))

Ich schaue mal wo ich am besten "meinen" GCC veröffentliche...

von Johann L. (gjlayde) Benutzerseite


Lesenswert?

N. G. schrieb:
> Dazu kamen noch ca. 10000000 und 1 Fehler dass die Bitbreite bei
> structs größer war als ihr Typ bits hatte (etwas so: struct x {unsigned
> y:30}; was auf dem AVR natürlich zum Fehler führt))

Das ist dann offenbar entweder ein Lapsus in csmith, oder eine falsche 
Konfiguration von csmith.  Ist doch wohl das mindeste, dass sizeof(int) 
eingestellt werden kann?

Funktioniert LTO mit Leerzeichen im Installationspfad(*) und ähnliche 
Scherze?

Prefix würd ich immer ohne solche Kapriolen wählen. Die Installierte 
Toolchain lässt sich ja einfach in nen anderen Ordner verschieben.

: Bearbeitet durch User
von N. G. (newgeneration) Benutzerseite


Lesenswert?

Johann L. schrieb:
> N. G. schrieb:
>> Dazu kamen noch ca. 10000000 und 1 Fehler dass die Bitbreite bei
>> structs größer war als ihr Typ bits hatte (etwas so: struct x {unsigned
>> y:30}; was auf dem AVR natürlich zum Fehler führt))
>
> Das ist dann offenbar entweder ein Lapsus in csmith, oder eine falsche
> Konfiguration von csmith.  Ist doch wohl das mindeste, dass sizeof(int)
> eingestellt werden kann?

Keine Ahnung, fiel bei mir auch direkt unter "schlechter Stil", aber ist 
ja nicht wirklich von belang

Johann L. schrieb:
> Funktioniert LTO mit Leerzeichen im Installationspfad(*) und ähnliche
> Scherze?
>
> Prefix würd ich immer ohne solche Kapriolen wählen. Die Installierte
> Toolchain lässt sich ja einfach in nen anderen Ordner verschieben.

LTO funktioniert, habe ich aber nur in einem Projekt bisher überhaupt 
benutzt. Dort läuft es aber fehlerfrei.
Leerzeichen im Pfad benutze ich generell nicht, schließlich sind wir 
Programmierer und kommen ohne diesen Schnickschnack (Leerzeichen, 
Umlaute, etc.) aus.

Kann ich aber nachher mal testen

von Karl Napp (Gast)


Lesenswert?

Und? Gibt es neue Erkenntnisse?

von Lena Schmidt (Gast)


Lesenswert?

Johann, du bist doch an der gcc-Entwicklung beteiligt. Wenn ich das 
richtig verstanden habe? Und du weißt wie es geht und oder hast es in 
der Vergangenheit schon mal gemacht. Kannst du nicht deine aktuelle 
Windows-Version mal zur Verfügung stellen? Das wäre sehr nett. :o)

von N. G. (newgeneration) Benutzerseite


Lesenswert?

Karl Napp schrieb:
> Und? Gibt es neue Erkenntnisse?

Ja, alles was ich getestet habe funktioniert.
Ich muss jetzt nur noch ne vernünftige Seite finden wo ich die GCCs (32 
und 64bit zum download stellen kann)

Bin zur Zeit eh nicht daheim, Weihnachten und Familie geht vor

Lena Schmidt schrieb:
> Kannst du nicht deine aktuelle Windows-Version mal zur Verfügung
> stellen? Das wäre sehr nett

Hallo Lena,
das mache ich schon ;)

Bald...

von Johann L. (gjlayde) Benutzerseite


Lesenswert?


von Lena Schmidt (Gast)


Lesenswert?

Ja, die kenne ich. Die ist leider kaputt (kein -fipa-pta). Wäre super, 
wenn du eine aktuelle Version hochladen könntest. :o)

von N. G. (newgeneration) Benutzerseite


Lesenswert?

Hallo,
ich war über den Jahreswechsel nicht daheim, deswegen melde ich mich 
erst jetzt...

Ich habe noch keinen passenden Hoster für die Files gefunden (habe aber 
noch nicht gesucht ;) ), aber auf deine Bitte hin hab ich die beiden 
Compiler (win32 und win64) mal in meine Dropbox gepackt. Links sind 
unten, ich kann nur nicht versprechen, dass diese ewig gültig bleiben.
Wenn ich die Files mal bei einem richtigen (vertraueswürdigen, guten) 
Hoster hochgeladen habe, melde ich mich hier wieder.

mfG
N.G.

https://www.dropbox.com/s/q6nahkv9d46p3ks/avr-gcc-5.3.1-win32.tar.bz2?dl=0
https://www.dropbox.com/s/b9wjk6k5w790rff/avr-gcc-5.3.1-win64.tar.bz2?dl=0

von Karl Napp (Gast)


Lesenswert?

Hm, ne, funktioniert hier nicht. Ich kompiliere mit

-xc *.c

und das mag deine Version nicht!?

von N. G. (newgeneration) Benutzerseite


Lesenswert?

Hast du die 32 oder 64 bit version genommen?
Die 64bit Version schluckt es bei mir ohne murren...

Wie lautet denn der genaue Fehler?

von Karl Napp (Gast)


Lesenswert?

Ich wüsste nicht, was die Bittigkeit damit zu tun hätte. Ich verwende 
ein 32-Bit-Windows.

avr-gcc: error: *.c: Invalid argument

von N. G. (newgeneration) Benutzerseite


Lesenswert?

Die Version an sich hat damit nichts zu tun. Möglicherweise habe ich 
bein erzeugen des 32bit-gccs einen Fehler gemacht. Ich habe jetzt auch 
mal beide Windowsversionen getestet und es hat sich der selbe Fehler 
eingestellt.
Nur ich wüsste nicht, wieso ein bestimmtes Kommandozeilenargument fehlen 
sollte

von Carl D. (jcw2)


Lesenswert?

Karl Napp schrieb:
> Ich wüsste nicht, was die Bittigkeit damit zu tun hätte. Ich verwende
> ein 32-Bit-Windows.
>
> avr-gcc: error: *.c: Invalid argument

Das"*.c" wird von einer Unix-shell eben zu "alle c-Files im aktuellen 
Verzeichnis" expandiert. CMD.EXE hat das nicht!

von N. G. (newgeneration) Benutzerseite


Lesenswert?

Carl D. schrieb:
> Karl Napp schrieb:
>> Ich wüsste nicht, was die Bittigkeit damit zu tun hätte. Ich verwende
>> ein 32-Bit-Windows.
>>
>> avr-gcc: error: *.c: Invalid argument
>
> Das"*.c" wird von einer Unix-shell eben zu "alle c-Files im aktuellen
> Verzeichnis" expandiert. CMD.EXE hat das nicht!

Nein, das sollte funktionieren.
Tut es zumindest bei mir ;)

von Karl Napp (Gast)


Lesenswert?

Vielleicht fehlt der Support für -xc (sofern der sich einzeln abschalten 
lässt).

von N. G. (newgeneration) Benutzerseite


Lesenswert?

Ich glaube ich habe den Fehler:
ich habe doch die Anleitung im Artikel avr-gcc geschrieben, und diese 
enthielt einen Fehler, den ich einen Tag später ausgebessert habe. Es 
fehlte --enable-languages=c,c++,lto
Wenn ich beim Bauen des win32-avr-gcc das auch vergessen habe dürfte 
klar sein, warum es nicht geht...

von Carl D. (jcw2)


Lesenswert?

N. G. schrieb:
> Carl D. schrieb:
>> Karl Napp schrieb:
>>> Ich wüsste nicht, was die Bittigkeit damit zu tun hätte. Ich verwende
>>> ein 32-Bit-Windows.
>>>
>>> avr-gcc: error: *.c: Invalid argument
>>
>> Das"*.c" wird von einer Unix-shell eben zu "alle c-Files im aktuellen
>> Verzeichnis" expandiert. CMD.EXE hat das nicht!
>
> Nein, das sollte funktionieren.
> Tut es zumindest bei mir ;)

Via Cygwin-bash?

von N. G. (newgeneration) Benutzerseite


Lesenswert?

Carl D. schrieb:
> N. G. schrieb:
>> Carl D. schrieb:
>>> Karl Napp schrieb:
>>>> Ich wüsste nicht, was die Bittigkeit damit zu tun hätte. Ich verwende
>>>> ein 32-Bit-Windows.
>>>>
>>>> avr-gcc: error: *.c: Invalid argument
>>>
>>> Das"*.c" wird von einer Unix-shell eben zu "alle c-Files im aktuellen
>>> Verzeichnis" expandiert. CMD.EXE hat das nicht!
>>
>> Nein, das sollte funktionieren.
>> Tut es zumindest bei mir ;)
>
> Via Cygwin-bash?

Tut mir leid, was das angeht: ich habe keine Ahnung obs mit oder ohne 
Cygwin/MSYS64 geht. Alle meine Windows PCs sind damit "verseucht". Kann 
also wirklich daran liegen

von Johann L. (gjlayde) Benutzerseite


Lesenswert?

...ich frag mich warum dein avr-gcc so riesig ist?  Das BZ2 bei dropbox 
hat ca. 170 MB.

Mein avr-gcc-5.2 (incl. Binutils und aller Libs) hat als ZIP weniger als 
43 MB, dein avr-gcc ist also 3x größer!

--enable-languages=c,c++ genügt.  Ohne diese Option wird für alle 
verfügbaren Sprachen generiert, allerdings weiß ich nicht auswendig ob 
das überhaupt funktioniert und dann z.B. Java, Ada etc. deaktiviert 
sind.

von N. G. (newgeneration) Benutzerseite


Lesenswert?

Johann L. schrieb:
> ...ich frag mich warum dein avr-gcc so riesig ist?  Das BZ2 bei dropbox
> hat ca. 170 MB.
>
> Mein avr-gcc-5.2 (incl. Binutils und aller Libs) hat als ZIP weniger als
> 43 MB, dein avr-gcc ist also 3x größer!

Tja, das frage ich mich auch...
Woran kann das liegen? (Schuss ins blaue: vllt Optimierung beim 
Kompilieren vergessen?)
WinAVR hat aber auch 300MB, allerdings ist da ja noch etwas zusätzliches 
(wie zB pn) dabei
Hier mal die Ordner (Unkomprimiert: 720MB!) nach Größe aufgeschlüsselt:
1
GetFoldersize - Ordnerliste
2
3
NAME                                                                      GRÖßE (BYTES)  
4
avr-gcc-5.3.1-win64                                                        755.208.072  
5
 avr-gcc-5.3.1-win64\libexec                                               452.906.459  
6
  avr-gcc-5.3.1-win64\libexec\gcc                                          452.906.459  
7
   avr-gcc-5.3.1-win64\libexec\gcc\avr                                     452.906.459  
8
    avr-gcc-5.3.1-win64\libexec\gcc\avr\5.3.1                              452.906.459  
9
     avr-gcc-5.3.1-win64\libexec\gcc\avr\5.3.1\[Dateien]                   452.349.219  
10
     avr-gcc-5.3.1-win64\libexec\gcc\avr\5.3.1\install-tools                   557.240  
11
 avr-gcc-5.3.1-win64\bin                                                   131.161.292  
12
 avr-gcc-5.3.1-win64\avr                                                    98.989.728  
13
  avr-gcc-5.3.1-win64\avr\bin                                               70.472.467  
14
  avr-gcc-5.3.1-win64\avr\include                                           16.432.990  
15
   avr-gcc-5.3.1-win64\avr\include\avr                                      16.204.027  
16
   avr-gcc-5.3.1-win64\avr\include\[Dateien]                                   158.238  
17
   avr-gcc-5.3.1-win64\avr\include\util                                         58.397  
18
   avr-gcc-5.3.1-win64\avr\include\compat                                       12.253  
19
   avr-gcc-5.3.1-win64\avr\include\sys                                              75  
20
  avr-gcc-5.3.1-win64\avr\lib                                               12.084.271  
21
   avr-gcc-5.3.1-win64\avr\lib\avr5                                          1.960.114  
22
   avr-gcc-5.3.1-win64\avr\lib\avrxmega6                                     1.347.214  
23
   avr-gcc-5.3.1-win64\avr\lib\avr25                                         1.160.332  
24
    avr-gcc-5.3.1-win64\avr\lib\avr25\[Dateien]                                652.862  
25
    avr-gcc-5.3.1-win64\avr\lib\avr25\tiny-stack                               507.470  
26
   avr-gcc-5.3.1-win64\avr\lib\avrxmega4                                       763.818  
27
   avr-gcc-5.3.1-win64\avr\lib\avrxmega2                                       739.238  
28
   avr-gcc-5.3.1-win64\avr\lib\avr4                                            723.662  
29
   avr-gcc-5.3.1-win64\avr\lib\avr51                                           627.482  
30
   avr-gcc-5.3.1-win64\avr\lib\ldscripts                                       583.261  
31
   avr-gcc-5.3.1-win64\avr\lib\avrxmega7                                       568.718  
32
   avr-gcc-5.3.1-win64\avr\lib\avrxmega5                                       518.198  
33
   avr-gcc-5.3.1-win64\avr\lib\avr35                                           516.994  
34
   avr-gcc-5.3.1-win64\avr\lib\[Dateien]                                       476.406  
35
   avr-gcc-5.3.1-win64\avr\lib\avr6                                            464.538  
36
   avr-gcc-5.3.1-win64\avr\lib\tiny-stack                                      458.326  
37
   avr-gcc-5.3.1-win64\avr\lib\avr31                                           405.986  
38
   avr-gcc-5.3.1-win64\avr\lib\avr3                                            399.058  
39
   avr-gcc-5.3.1-win64\avr\lib\avrtiny                                         370.926  
40
 avr-gcc-5.3.1-win64\lib                                                    60.544.679  
41
  avr-gcc-5.3.1-win64\lib\gcc                                               60.544.679  
42
   avr-gcc-5.3.1-win64\lib\gcc\avr                                          60.544.679  
43
    avr-gcc-5.3.1-win64\lib\gcc\avr\5.3.1                                   60.544.679  
44
     avr-gcc-5.3.1-win64\lib\gcc\avr\5.3.1\avr25                             6.966.108  
45
      avr-gcc-5.3.1-win64\lib\gcc\avr\5.3.1\avr25\[Dateien]                  3.483.708  
46
      avr-gcc-5.3.1-win64\lib\gcc\avr\5.3.1\avr25\tiny-stack                 3.482.400  
47
     avr-gcc-5.3.1-win64\lib\gcc\avr\5.3.1\avrtiny                           3.675.846  
48
     avr-gcc-5.3.1-win64\lib\gcc\avr\5.3.1\avrxmega5                         3.605.828  
49
     avr-gcc-5.3.1-win64\lib\gcc\avr\5.3.1\avrxmega7                         3.605.676  
50
     avr-gcc-5.3.1-win64\lib\gcc\avr\5.3.1\avrxmega4                         3.537.696  
51
     avr-gcc-5.3.1-win64\lib\gcc\avr\5.3.1\avrxmega6                         3.537.536  
52
     avr-gcc-5.3.1-win64\lib\gcc\avr\5.3.1\avr31                             3.523.214  
53
     avr-gcc-5.3.1-win64\lib\gcc\avr\5.3.1\avrxmega2                         3.515.228  
54
     avr-gcc-5.3.1-win64\lib\gcc\avr\5.3.1\avr51                             3.509.884  
55
     avr-gcc-5.3.1-win64\lib\gcc\avr\5.3.1\avr6                              3.507.416  
56
     avr-gcc-5.3.1-win64\lib\gcc\avr\5.3.1\avr3                              3.500.950  
57
     avr-gcc-5.3.1-win64\lib\gcc\avr\5.3.1\avr35                             3.487.948  
58
     avr-gcc-5.3.1-win64\lib\gcc\avr\5.3.1\avr5                              3.485.116  
59
     avr-gcc-5.3.1-win64\lib\gcc\avr\5.3.1\avr4                              3.480.624  
60
     avr-gcc-5.3.1-win64\lib\gcc\avr\5.3.1\[Dateien]                         3.474.306  
61
     avr-gcc-5.3.1-win64\lib\gcc\avr\5.3.1\tiny-stack                        3.473.070  
62
     avr-gcc-5.3.1-win64\lib\gcc\avr\5.3.1\device-specs                        576.886  
63
     avr-gcc-5.3.1-win64\lib\gcc\avr\5.3.1\include                              71.660  
64
     avr-gcc-5.3.1-win64\lib\gcc\avr\5.3.1\install-tools                         4.906  
65
      avr-gcc-5.3.1-win64\lib\gcc\avr\5.3.1\install-tools\include                4.451  
66
      avr-gcc-5.3.1-win64\lib\gcc\avr\5.3.1\install-tools\[Dateien]                455  
67
     avr-gcc-5.3.1-win64\lib\gcc\avr\5.3.1\include-fixed                         4.781  
68
     avr-gcc-5.3.1-win64\lib\gcc\avr\5.3.1\plugin                                    0  
69
 avr-gcc-5.3.1-win64\share                                                  10.496.877  
70
  avr-gcc-5.3.1-win64\share\info                                             7.745.946  
71
  avr-gcc-5.3.1-win64\share\man                                              2.676.576  
72
   avr-gcc-5.3.1-win64\share\man\man1                                        2.599.432  
73
   avr-gcc-5.3.1-win64\share\man\man7                                           77.144  
74
  avr-gcc-5.3.1-win64\share\doc                                                 74.355  
75
   avr-gcc-5.3.1-win64\share\doc\avr-libc-1.8.1svn                              74.355  
76
    avr-gcc-5.3.1-win64\share\doc\avr-libc-1.8.1svn\examples                    74.355  
77
     avr-gcc-5.3.1-win64\share\doc\avr-libc-1.8.1svn\examples\stdiodemo         20.848  
78
     avr-gcc-5.3.1-win64\share\doc\avr-libc-1.8.1svn\examples\twitest           14.980  
79
     avr-gcc-5.3.1-win64\share\doc\avr-libc-1.8.1svn\examples\largedemo         14.246  
80
     avr-gcc-5.3.1-win64\share\doc\avr-libc-1.8.1svn\examples\asmdemo           13.103  
81
     avr-gcc-5.3.1-win64\share\doc\avr-libc-1.8.1svn\examples\demo              11.178  
82
 avr-gcc-5.3.1-win64\utils                                                   1.109.037  
83
  avr-gcc-5.3.1-win64\utils\bin                                              1.109.037  
84
 avr-gcc-5.3.1-win64\include                                                         0
PS: der ordner utils enthält nur make und avrdude, aber der trägt ja 
nicht auf...

: Bearbeitet durch User
von Johann L. (gjlayde) Benutzerseite


Lesenswert?

Für ein triviales Programm bekomme ich mit deiner 32-Bit Version
1
e:/WinAVR/5.3.1/bin/avr-gcc -mmcu=atmega328 foo.c
2
e:/winavr/5.3.1/bin/../lib/gcc/avr/5.3.1/../../../../avr/bin/ld.exe: asprintf failed
3
collect2.exe: error: ld returned 1 exit status
Hier ist der von dir verwendete --host wohl zu neu oder etwas anderes 
ist mit deiner Toolchain resp. cross-host Umgebung nicht ok.  M$ ist 
dafür bekannt sich bei xprintf nicht an die Spezifikationen zu halten; 
z.B. bei den Rückgabewerten.

N. G. schrieb:
> Johann L. schrieb:
>> ...ich frag mich warum dein avr-gcc so riesig ist?  Das BZ2 bei dropbox
>> hat ca. 170 MB.
>>
>> Mein avr-gcc-5.2 (incl. Binutils und aller Libs) hat als ZIP weniger als
>> 43 MB, dein avr-gcc ist also 3x größer!

...das bezieht sich auf deine 32-Bit Version.

Der Unterschied rührt von den EXE her. Meine Toolchains strippe ich 
damit sie nicht so riesig werden.  Mit Symbol-Info kann da eh niemand 
was anfangen:
1
find . -name '*.exe' -exec i386-mingw32-strip {} ';'

> Woran kann das liegen? (Schuss ins blaue: vllt Optimierung beim
> Kompilieren vergessen?)

Unwahrscheinlich. Es sei denn du hast explizite ohne Optimierung 
übersetzt. Wobei nicht nur cc1.exe, lto1.exe und cc1plus.exe größer 
sind, sondern auch z.B. avr-strip.exe etc.

von N. G. (newgeneration) Benutzerseite


Lesenswert?

Okay, neuer Versuch:

Danke Johann, ich habs mal mit deinem Code gestript: Gepackt 30MB!
Sehr schön.

Ich hab den Compiler gerade nocheinmal ganz neu gebaut. Frische Sourcen 
von heute.

Johann, kannst du nochmal das Projekt von heute kompilieren, ob der 
selbe Fehler nochmal kommt?

Karl Napp, wie siehts damit bei dir aus?

Auch der Rest ist herzlich zum testen eingeladen :)

Der Link:
https://www.dropbox.com/s/q6nahkv9d46p3ks/avr-gcc-5.3.1-win32.tar.bz2?dl=0

von Karl Napp (Gast)


Lesenswert?

Nope.

avr-gcc: error: *.c: Invalid argument
avr-gcc: warning: '-x c' after last input file has no effect
avr-gcc: fatal error: no input files
compilation terminated.

von Ingo L. (corrtexx)


Lesenswert?

Wenn ich statt der AVR Toolchain deinen Compiler 5.2.1 benutze ist bei 
mir im Output die Programm Memory Usage = 0.0% und die Data Memory Usage 
auch 0. Woran kann das liegen?

Ich verwende Atmel Studio 6.2

------ Rebuild All started: Project: 1V0, Configuration: Debug AVR 
------
Build started.
Project "1V0.cproj" (Clean target(s)):
Target "Clean" in file "C:\Program Files (x86)\Atmel\Atmel Studio 
6.2\Vs\Compiler.targets" from project 
"C:\Users\ingo\Documents\Ingo\Projekte\Wurfspiel\Programm\1V0\1V0.cproj" 
(entry point):
  Task "RunCompilerTask"
    Shell Utils Path C:\Program Files (x86)\Atmel\Atmel Studio 
6.2\shellUtils
    C:\Program Files (x86)\Atmel\Atmel Studio 6.2\shellUtils\make.exe 
clean
    rm -rf  main.o
    rm -rf  main.d
    rm -rf "1V0.elf" "1V0.a" "1V0.hex" "1V0.lss" "1V0.eep" "1V0.map" 
"1V0.srec" "1V0.usersignatures"
  Done executing task "RunCompilerTask".
Done building target "Clean" in project "1V0.cproj".
Done building project "1V0.cproj".

Build succeeded.
------ Rebuild All started: Project: 1V0, Configuration: Debug AVR 
------
Build started.
Project "1V0.cproj" (default targets):
Target "PreBuildEvent" skipped, due to false condition; 
('$(PreBuildEvent)'!='') was evaluated as (''!='').
Target "CoreBuild" in file "C:\Program Files (x86)\Atmel\Atmel Studio 
6.2\Vs\Compiler.targets" from project 
"C:\Users\ingo\Documents\Ingo\Projekte\Wurfspiel\Programm\1V0\1V0.cproj" 
(target "Build" depends on it):
  Task "RunCompilerTask"
    Shell Utils Path C:\Program Files (x86)\Atmel\Atmel Studio 
6.2\shellUtils
    C:\Program Files (x86)\Atmel\Atmel Studio 6.2\shellUtils\make.exe 
all
    Building file: .././main.c
    Invoking: AVR/GNU C Compiler : 5.2.1
    "C:\Program Files (x86)\Atmel\Atmel Toolchain\AVR8 
GCC\gcc-5-avr-mingw32\bin\avr-gcc.exe"  -x c -funsigned-char 
-funsigned-bitfields -DDEBUG  -O2 -ffunction-sections -fdata-sections 
-fpack-struct -fshort-enums -g2 -Wall -mmcu=attiny13 -c -std=gnu99 -MD 
-MP -MF "main.d" -MT"main.d" -MT"main.o"   -o "main.o" ".././main.c"
    Finished building: .././main.c
    Building target: 1V0.elf
    Invoking: AVR/GNU Linker : 5.2.1
    "C:\Program Files (x86)\Atmel\Atmel Toolchain\AVR8 
GCC\gcc-5-avr-mingw32\bin\avr-gcc.exe" -o 1V0.elf  main.o 
-Wl,-Map="1V0.map" -Wl,--start-group -Wl,-lm  -Wl,--end-group 
-Wl,--gc-sections -mmcu=attiny13
    Finished building target: 1V0.elf
    "C:\Program Files (x86)\Atmel\Atmel Toolchain\AVR8 
GCC\gcc-5-avr-mingw32\bin\avr-objcopy.exe" -O ihex -R .eeprom -R .fuse 
-R .lock -R .signature -R .user_signatures  "1V0.elf" "1V0.hex"
    "C:\Program Files (x86)\Atmel\Atmel Toolchain\AVR8 
GCC\gcc-5-avr-mingw32\bin\avr-objcopy.exe" -j .eeprom 
--set-section-flags=.eeprom=alloc,load --change-section-lma .eeprom=0 
--no-change-warnings -O ihex "1V0.elf" "1V0.eep" || exit 0
    "C:\Program Files (x86)\Atmel\Atmel Toolchain\AVR8 
GCC\gcc-5-avr-mingw32\bin\avr-objdump.exe" -h -S "1V0.elf" > "1V0.lss"
    "C:\Program Files (x86)\Atmel\Atmel Toolchain\AVR8 
GCC\gcc-5-avr-mingw32\bin\avr-objcopy.exe" -O srec -R .eeprom -R .fuse 
-R .lock -R .signature -R .user_signatures "1V0.elf" "1V0.srec"
    "C:\Program Files (x86)\Atmel\Atmel Toolchain\AVR8 
GCC\gcc-5-avr-mingw32\bin\avr-size.exe" "1V0.elf"
       text     data      bss      dec      hex  filename
        298        0        8      306      132  1V0.elf
  Done executing task "RunCompilerTask".
  Task "RunOutputFileVerifyTask"
        Program Memory Usage   :  0 bytes   0,0 % Full
        Data Memory Usage     :  0 bytes   0,0 % Full
  Done executing task "RunOutputFileVerifyTask".
Done building target "CoreBuild" in project "1V0.cproj".
Target "PostBuildEvent" skipped, due to false condition; 
('$(PostBuildEvent)' != '') was evaluated as ('' != '').
Target "Build" in file "C:\Program Files (x86)\Atmel\Atmel Studio 
6.2\Vs\Avr.common.targets" from project 
"C:\Users\ingo\Documents\Ingo\Projekte\Wurfspiel\Programm\1V0\1V0.cproj" 
(entry point):
Done building target "Build" in project "1V0.cproj".
Done building project "1V0.cproj".

Build succeeded.
========== Rebuild All: 1 succeeded, 0 failed, 0 skipped ==========

: Bearbeitet durch User
von Ingo L. (corrtexx)


Lesenswert?

Push

von Ingo L. (corrtexx)


Lesenswert?

Der GCC 5.3.1 läuft einwandfrei ;)

Kann man hier nicht mal die aktuellen Versionen des Compilers auf der 
Seite speichern?

: Bearbeitet durch User
von Lena Schmidt (Gast)


Lesenswert?

Hier läuft nix. Habe dasselbe Problem wie Karl.

von Johann L. (gjlayde) Benutzerseite


Lesenswert?

N. G. schrieb:
> Johann, kannst du nochmal das Projekt von heute kompilieren, ob der
> selbe Fehler nochmal kommt?

Ja, immer noch Fehler mit asprintf in avr/bin/ld.exe.

von Karl Napp (Gast)


Lesenswert?

Johann, würdest du uns bitte eine Version zur Verfügung stellen? Es 
klingt so, als hättest du die Kompilierumgebung bereits fertig zum 
Einsatz.

von Johann L. (gjlayde) Benutzerseite


Lesenswert?

Johann L. schrieb:
> N. G. schrieb:
>> Johann, kannst du nochmal das Projekt von heute kompilieren, ob der
>> selbe Fehler nochmal kommt?
>
> Ja, immer noch Fehler mit asprintf in avr/bin/ld.exe.

Zur Info: Das Problem mit dem asprintf ist in v6.5+ und v7.2+ behoben:

https://gcc.gnu.org/PR81487

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.