mikrocontroller.net

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


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.
Autor: N. G. (newgeneration) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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
PREFIX=$HOME/local/avr
PATH=$PATH:$PREFIX/bin
../binutils-2.25/configure --prefix=$PREFIX --target=avr --disable-nls --host x86_64-w64-ming32
../gcc-5.3.0/configure --prefix=$PREFIX --target=avr --enable-languages=c,c++  --disable-nls --disable-libssp --with-dwarf2 --host x86_64-w64-ming32
etc.
was mir aber mit der Warnung quittiert wird:
configure: WARNING: If you wanted to set the --build type, don't use --host.
    If a cross compiler is detected then cross compile mode will be used.
Also sollte ich wohl --build nehmen. Damit kommt allerdings folgender 
Fehler:
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

Autor: Johann L. (gjlayde) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Johann L. (gjlayde) Benutzerseite
Datum:

Bewertung
1 lesenswert
nicht lesenswert
Hier mal meine gcc configure für den Canadian Cross:
../../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

Autor: Fridtjof Gärtner (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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)

Autor: N. G. (newgeneration) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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
Autor: N. G. (newgeneration) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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...

Autor: Johann L. (gjlayde) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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
Autor: N. G. (newgeneration) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Karl Napp (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Und? Gibt es neue Erkenntnisse?

Autor: Lena Schmidt (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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)

Autor: N. G. (newgeneration) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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...

Autor: Johann L. (gjlayde) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: Lena Schmidt (Gast)
Datum:

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

Autor: N. G. (newgeneration) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Karl Napp (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hm, ne, funktioniert hier nicht. Ich kompiliere mit

-xc *.c

und das mag deine Version nicht!?

Autor: N. G. (newgeneration) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Karl Napp (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: N. G. (newgeneration) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Carl D. (jcw2)
Datum:

Bewertung
0 lesenswert
nicht 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!

Autor: N. G. (newgeneration) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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 ;)

Autor: Karl Napp (Gast)
Datum:

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

Autor: N. G. (newgeneration) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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...

Autor: Carl D. (jcw2)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: N. G. (newgeneration) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Johann L. (gjlayde) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: N. G. (newgeneration) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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:
GetFoldersize - Ordnerliste

NAME                                                                      GRÖßE (BYTES)  
avr-gcc-5.3.1-win64                                                        755.208.072  
 avr-gcc-5.3.1-win64\libexec                                               452.906.459  
  avr-gcc-5.3.1-win64\libexec\gcc                                          452.906.459  
   avr-gcc-5.3.1-win64\libexec\gcc\avr                                     452.906.459  
    avr-gcc-5.3.1-win64\libexec\gcc\avr\5.3.1                              452.906.459  
     avr-gcc-5.3.1-win64\libexec\gcc\avr\5.3.1\[Dateien]                   452.349.219  
     avr-gcc-5.3.1-win64\libexec\gcc\avr\5.3.1\install-tools                   557.240  
 avr-gcc-5.3.1-win64\bin                                                   131.161.292  
 avr-gcc-5.3.1-win64\avr                                                    98.989.728  
  avr-gcc-5.3.1-win64\avr\bin                                               70.472.467  
  avr-gcc-5.3.1-win64\avr\include                                           16.432.990  
   avr-gcc-5.3.1-win64\avr\include\avr                                      16.204.027  
   avr-gcc-5.3.1-win64\avr\include\[Dateien]                                   158.238  
   avr-gcc-5.3.1-win64\avr\include\util                                         58.397  
   avr-gcc-5.3.1-win64\avr\include\compat                                       12.253  
   avr-gcc-5.3.1-win64\avr\include\sys                                              75  
  avr-gcc-5.3.1-win64\avr\lib                                               12.084.271  
   avr-gcc-5.3.1-win64\avr\lib\avr5                                          1.960.114  
   avr-gcc-5.3.1-win64\avr\lib\avrxmega6                                     1.347.214  
   avr-gcc-5.3.1-win64\avr\lib\avr25                                         1.160.332  
    avr-gcc-5.3.1-win64\avr\lib\avr25\[Dateien]                                652.862  
    avr-gcc-5.3.1-win64\avr\lib\avr25\tiny-stack                               507.470  
   avr-gcc-5.3.1-win64\avr\lib\avrxmega4                                       763.818  
   avr-gcc-5.3.1-win64\avr\lib\avrxmega2                                       739.238  
   avr-gcc-5.3.1-win64\avr\lib\avr4                                            723.662  
   avr-gcc-5.3.1-win64\avr\lib\avr51                                           627.482  
   avr-gcc-5.3.1-win64\avr\lib\ldscripts                                       583.261  
   avr-gcc-5.3.1-win64\avr\lib\avrxmega7                                       568.718  
   avr-gcc-5.3.1-win64\avr\lib\avrxmega5                                       518.198  
   avr-gcc-5.3.1-win64\avr\lib\avr35                                           516.994  
   avr-gcc-5.3.1-win64\avr\lib\[Dateien]                                       476.406  
   avr-gcc-5.3.1-win64\avr\lib\avr6                                            464.538  
   avr-gcc-5.3.1-win64\avr\lib\tiny-stack                                      458.326  
   avr-gcc-5.3.1-win64\avr\lib\avr31                                           405.986  
   avr-gcc-5.3.1-win64\avr\lib\avr3                                            399.058  
   avr-gcc-5.3.1-win64\avr\lib\avrtiny                                         370.926  
 avr-gcc-5.3.1-win64\lib                                                    60.544.679  
  avr-gcc-5.3.1-win64\lib\gcc                                               60.544.679  
   avr-gcc-5.3.1-win64\lib\gcc\avr                                          60.544.679  
    avr-gcc-5.3.1-win64\lib\gcc\avr\5.3.1                                   60.544.679  
     avr-gcc-5.3.1-win64\lib\gcc\avr\5.3.1\avr25                             6.966.108  
      avr-gcc-5.3.1-win64\lib\gcc\avr\5.3.1\avr25\[Dateien]                  3.483.708  
      avr-gcc-5.3.1-win64\lib\gcc\avr\5.3.1\avr25\tiny-stack                 3.482.400  
     avr-gcc-5.3.1-win64\lib\gcc\avr\5.3.1\avrtiny                           3.675.846  
     avr-gcc-5.3.1-win64\lib\gcc\avr\5.3.1\avrxmega5                         3.605.828  
     avr-gcc-5.3.1-win64\lib\gcc\avr\5.3.1\avrxmega7                         3.605.676  
     avr-gcc-5.3.1-win64\lib\gcc\avr\5.3.1\avrxmega4                         3.537.696  
     avr-gcc-5.3.1-win64\lib\gcc\avr\5.3.1\avrxmega6                         3.537.536  
     avr-gcc-5.3.1-win64\lib\gcc\avr\5.3.1\avr31                             3.523.214  
     avr-gcc-5.3.1-win64\lib\gcc\avr\5.3.1\avrxmega2                         3.515.228  
     avr-gcc-5.3.1-win64\lib\gcc\avr\5.3.1\avr51                             3.509.884  
     avr-gcc-5.3.1-win64\lib\gcc\avr\5.3.1\avr6                              3.507.416  
     avr-gcc-5.3.1-win64\lib\gcc\avr\5.3.1\avr3                              3.500.950  
     avr-gcc-5.3.1-win64\lib\gcc\avr\5.3.1\avr35                             3.487.948  
     avr-gcc-5.3.1-win64\lib\gcc\avr\5.3.1\avr5                              3.485.116  
     avr-gcc-5.3.1-win64\lib\gcc\avr\5.3.1\avr4                              3.480.624  
     avr-gcc-5.3.1-win64\lib\gcc\avr\5.3.1\[Dateien]                         3.474.306  
     avr-gcc-5.3.1-win64\lib\gcc\avr\5.3.1\tiny-stack                        3.473.070  
     avr-gcc-5.3.1-win64\lib\gcc\avr\5.3.1\device-specs                        576.886  
     avr-gcc-5.3.1-win64\lib\gcc\avr\5.3.1\include                              71.660  
     avr-gcc-5.3.1-win64\lib\gcc\avr\5.3.1\install-tools                         4.906  
      avr-gcc-5.3.1-win64\lib\gcc\avr\5.3.1\install-tools\include                4.451  
      avr-gcc-5.3.1-win64\lib\gcc\avr\5.3.1\install-tools\[Dateien]                455  
     avr-gcc-5.3.1-win64\lib\gcc\avr\5.3.1\include-fixed                         4.781  
     avr-gcc-5.3.1-win64\lib\gcc\avr\5.3.1\plugin                                    0  
 avr-gcc-5.3.1-win64\share                                                  10.496.877  
  avr-gcc-5.3.1-win64\share\info                                             7.745.946  
  avr-gcc-5.3.1-win64\share\man                                              2.676.576  
   avr-gcc-5.3.1-win64\share\man\man1                                        2.599.432  
   avr-gcc-5.3.1-win64\share\man\man7                                           77.144  
  avr-gcc-5.3.1-win64\share\doc                                                 74.355  
   avr-gcc-5.3.1-win64\share\doc\avr-libc-1.8.1svn                              74.355  
    avr-gcc-5.3.1-win64\share\doc\avr-libc-1.8.1svn\examples                    74.355  
     avr-gcc-5.3.1-win64\share\doc\avr-libc-1.8.1svn\examples\stdiodemo         20.848  
     avr-gcc-5.3.1-win64\share\doc\avr-libc-1.8.1svn\examples\twitest           14.980  
     avr-gcc-5.3.1-win64\share\doc\avr-libc-1.8.1svn\examples\largedemo         14.246  
     avr-gcc-5.3.1-win64\share\doc\avr-libc-1.8.1svn\examples\asmdemo           13.103  
     avr-gcc-5.3.1-win64\share\doc\avr-libc-1.8.1svn\examples\demo              11.178  
 avr-gcc-5.3.1-win64\utils                                                   1.109.037  
  avr-gcc-5.3.1-win64\utils\bin                                              1.109.037  
 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
Autor: Johann L. (gjlayde) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Für ein triviales Programm bekomme ich mit deiner 32-Bit Version
e:/WinAVR/5.3.1/bin/avr-gcc -mmcu=atmega328 foo.c
e:/winavr/5.3.1/bin/../lib/gcc/avr/5.3.1/../../../../avr/bin/ld.exe: asprintf failed
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:
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.

Autor: N. G. (newgeneration) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Karl Napp (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Ingo L. (corrtexx)
Datum:

Bewertung
0 lesenswert
nicht 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
Autor: Ingo L. (corrtexx)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Push

Autor: Ingo L. (corrtexx)
Datum:

Bewertung
0 lesenswert
nicht 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
Autor: Lena Schmidt (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hier läuft nix. Habe dasselbe Problem wie Karl.

Autor: Johann L. (gjlayde) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Karl Napp (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Johann L. (gjlayde) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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

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.
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.

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