www.mikrocontroller.net

Forum: Compiler & IDEs Mingw und Cygwin


Autor: Minos (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hallo zusammen,

ich bin jetzt seit längerem mit dem winavr zu gange und würde mir gerne
meine eigene up to date version erzeugen vom gcc und der lib.

gibts es irgendwo ein HOWTO wie ich mit diesem oben genannten tools das
ganze selber compilieren kann? leider bin ich zumal noch nen unix noob
:(. ich hoffe ihr könnt mir weiterhelfen.

das habe ich bisher:

MinGW
Cygwin
Binutils

natürlich jeweis die aktuelle version !

Autor: Jörg Wunsch (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du kannst Eric Weddington mal fragen, er bereitet gerade ein paar
Scripts vor, die das ein wenig automatisieren helfen.  Die kannst Du
sicher für ihn testen.

MinGW brauchst Du eigentlich nicht unbedingt.  Er hat es im
Wesentlichen benutzt, weil Cygwin eine Abhängigkeit gegen die
Cygwin-DLL mit sich bringt, das wollte er für WinAVR möglichst
vermeiden.  Wenn Du aber ohnehin ein Cygwin bei Dir installiert hast,
kann Dir das egal sein.  Der Vorteil von Cygwin ist wohl, daß es eine
sehr vollständige Unix-Emulation (sowohl Tools als auch API)
darstellt, während MinGW eher eine Umsetzung der Unix-Tools auf
Windows ist, ohne auch das API zu emulieren.  So habe ich das
zumindest verstanden -- sorry, ich habe von Windows keinen Schimmer.

Autor: BernhardT (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also mich würde das Thema auch interessiern, nicht wegen AVRs da bin ich
 mit WIN-AVR echt zufrieden.
Ich weiß aber,es gab einmal eine GCC - Version für Motorola DSP5600x.
Wenn man heute schaut was C für DSP's kostet eine geniale Sache.
Aber wie das auf windoofs bringen (ich habe leider einsehen müssen, das
ich zu doof für die Linux Dateistruktur bin)- Beinahe jeder
Elektroniker der nur etwas Musik macht ist scharf auf DSP's (Echo,
Hall, Effekte etc.).
Gruß Bernhard

Autor: Jörg Wunsch (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Aber wie das auf windoofs bringen (ich habe leider einsehen müssen,
> das ich zu doof für die Linux Dateistruktur bin)

Das Problem dabei ist, daß Cygwin eben halt wirklich genau dies tut:
Dir eine einigermaßen brauchbare Unix-Emulation auf Windows zu bieten.
Wenn Du Dich aber in ein Projekt reinarbeiten willst, bei dem Du
Neuland betreten willst, wird sich Cygwin für Dich ganz genauso wie
Unix anfühlen: ungewohnt.  Entweder gehst Du die Aufgabe an, aber wenn
eine mögliche Unix-Installation ohnehin eine Option für Dich ist,
kannst Du das auch gleich auf diesem Wege machen.  Die Probleme, die
Du jetzt für Linux beschrieben hast, wirst Du mit Cygwin am Ende
genauso haben.  Oder Du läßt es sein.  Oder Du findest jemanden,
der's
für Dich tut...

Am Ende haben wir alle mal irgendwann mit Unix angefangen, so schlimm
kann's nicht sein (und ich bin [auch] kein Informatiker).

Der Fall des OP ist geringfügig anders: dort genügt am Ende wohl ein
Kochrezept, da andere den Weg schon gegangen sind und die möglichen
Klippen kennen.

Autor: Minos (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ok...ich hab jetzt mal versucht die avr-libc neu zu erstellen.

ich hab einfach mal den cygwin angeschmissen und die aktuelle libc
entpackt und versucht dieses "./configure" zu starten (" wer weiss
wofür das gut ist..:)").

aber schon dabei erzählt der mir was von "wrong compiler".
vorher hab ich natürlich mein winavr gerümpel aus den
umgebungsvariablen gelöscht damit es da nicht zu konflikten zwischen
den compilern kommt.

vielleicht benötige ich doch nen mingw??.

Autor: Matthias (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

du mußt unter cygwin erstmal GCC/Binutils mit dem AVR als Target
installieren. Anschließend solltest du dann die avrlibc kompilieren
können.

Matthias

Autor: Jörg Wunsch (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ähem, sorry, da habe ich mal zu sehr vom allgemeinen Fall geredet und
diese etwas eigenartig aufgebaute Struktur der avr-libc außer acht
gelassen. :-(

./doconf
./domake
./domake install

bitte.  Sorry für die Verwirrung, die ich gestiftet habe.  In die
beiden genannten Scripts kannst Du auch reinsehen, die sind wirklich
simpel.  Daß sie nötig sind, hängt eben mit dieser 4-fach
Compilierweise zusammen.

Autor: Minos (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@jörg:
yo kein problem. ist ja nix passiert..:D
das mit dem ./configure habe ich übrigens aus dem INSTALL
ascii file welches mit der libc zusammen kommt.
dabei habe ich die oberen zeilen überlesen welche auf
die inst. anweisung im doc verzeichnis hinweisen.
da steht auch was von den gcc binutils.

da sag ich nur:  Minos < RTFM

wenn das alles so funktioniert ist es einfacher als ich erst dachte.
blos diese shell schmiert öfter mal ab. scheint ziemlich buggy zu sein.
der "tar" befehl geht bei mir gar nicht.
wie kann ich eigentlich unter unix bzw in dieser shell ein verzeichnis
zurück springen?
habs mit "cd\" und "cd.." probiert. geht aber net..:(.

Autor: Jörg Wunsch (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nein, der shell-Script selbst ist nicht buggy.

Wenn Du kein tar hast, dann hast Du wohl ein Stückchen Cygwin
vergessen.  Archivers oder sowas.  Andererseits sind die nötigen
Kommandos dafür (als MinGW-Kommandos) auch bereits in WinAVR mit drin,
wenn mich nicht alles täuscht, d. h. Du kannst das Auspacken dort
machen mit:

tar -xvj -f [Dateiname]

(aus cmd.exe [»MS-DOS Eingabeaufforderung«] heraus)

Zum eigentlichen Bauen wird meines Wissens tar nicht mehr benötigt.

»cd ..« ist richtig, allerdings mußt Du das Leerzeichen schreiben.
Das Kommando heißt eben »cd«, und das »..« (bzw. das »/«) sind die
Argumente dazu.  Ohne Leerzeichen würde die Shell ein Kommando diesen
Namens suchen.  Kannst Du auch haben:

alias cd..="cd .."

:-)

Allerdings kann ich Dir gerade nicht sagen, wo die Bash in der
Cygwin-Umgebung sich ihre .bashrc Start-Datei sucht, ansonsten kannst
Du dieses Alias-Kommando auch da reinpacken, damit es jedesmal wieder
gesetzt wird.

Autor: Minos (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>> Nein, der shell-Script selbst ist nicht buggy.
also ich meine schon. manchmal bleibt das ding einfach stehen und hängt
sich weg obwohl ich gar nix gemacht hab.

>> Wenn Du kein tar hast, dann hast Du wohl ein Stückchen Cygwin
vergessen.
mmh...denke ich eher nicht. cygwin ist mittlerweile soweit das sich das
ganze selbst installiert ohne das du etwas machen musst.
d.h installer runterladen und das inst. programm holt sich alle sachen
vom server und installiert sich selber.

also ich habe versucht den tar befehl so auszuführen:
tar -x meinfile.tar
der startet dann mit irgendwas und bleibt einfach hängen.

was soll eigentlich dieses doppelt gepackte zeug? *.tar.bz2
das hab ich bisher auch noch nicht so richtig kapiert

ich jage erst den bunzip2 darüber und danach starte ich dieses tar tool
was ja nicht so recht geht. ist aber auch egal, ich kann das tar file
auch win winrar entpacken.

aber wie ich gerade sehe soll es wohl so gehen:
bunzip2 -c binutils-<version>.tar.bz2 | tar xf -
yo geht.

so jetzt hab ich folgende versucht:
../configure --prefix=$PREFIX --target=avr --disable-nls

aber der versteht dieses --diable-nls ( was auch immer das heissen mag
nicht.)

habs jetzt mal ohne probiert und der meckert irgendwas von einer
enviorment variable CC an die gesetzt werden muss zu einem compiler.
sieht so aus als würde ich diesen mingw doch noch brauchen.

naja so einfach wirds dann wohl doch nicht. ich glaube ich muss doch
mal eric was auf die nerven fallen ( wollte ich eigentlich vermeiden ).

Autor: Jörg Wunsch (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> also ich meine schon. manchmal bleibt das ding einfach stehen und
> hängt sich weg obwohl ich gar nix gemacht hab.

Dann muß das irgendeins der Tools sein.

Ich hatte letztens mal Zugriff auf ein Windows und habe das dort
ausprobiert, das hat problemlos funktioniert.

>> Wenn Du kein tar hast, dann hast Du wohl ein Stückchen Cygwin
>> vergessen.

> mmh...denke ich eher nicht. cygwin ist mittlerweile soweit das sich
> das ganze selbst installiert ohne das du etwas machen musst.

Du mußt ihm ja trotzdem noch ankreuzen, was Du alles haben willst.

> was soll eigentlich dieses doppelt gepackte zeug? *.tar.bz2

Es ist nicht doppelt gepackt. ;-)

tar erstellt das Archiv, komprimiert aber selbst nicht.
bzip2 komprimiert dann das tar-Archiv.

Strikte Aufgabentrennung also.  Durchaus typisch für Unix.

> aber wie ich gerade sehe soll es wohl so gehen:
> bunzip2 -c binutils-<version>.tar.bz2 | tar xf -
> yo geht.

Wenn das geht, aber ein tar -xvjf ... nicht, dann hat die
Pipe-Implementierung Deines Systems einen Schuß.  `System'
meint dabei die Kombination aus Windows und ggf. Cygwin.

Hast Du das mal spaßeshalber sowohl unter Cygwin als auch ohne
probiert?  Wie gesagt, WinAVR selbst sollte die nötigen Kommandos
eigentlich auch mitbringen, um das auszupacken.

../configure --prefix=$PREFIX --target=avr --disable-nls

Warum willst Du eigentlich die binutils neu bauen?  Ich denke, Dich
interessiert vor allem avr-libc?  Du brauchst dafür wirklich keine
eigene Version von avr-gcc und avr-binutils.

> aber der versteht dieses --diable-nls ( was auch immer das heissen
> mag nicht.)

Bedeutung: er soll keine Internationalisierung (der enthaltenen Texte)
mit einbinden.  Wenn Du diese mit haben willst, brauchst Du noch ein
wenig Krempel ringsum, damit diese Internationalisierung nutzbar wird
(insbesondere eine libintl.a bzw. libintl.so).

Was heißt ,,versteht nicht''?  Diese configure Scripts können
normalerweise beliebige --enable-foo bzw. --disable-foo Argumente
entgegennehmen, selbst dann, wenn sie damit selbst nichts anfangen
können.  Der Sinn ist, daß irgendein configure in irgendeinem
Unterverzeichnis eventuell was damit anfangen kann, auch wenn der
oberste Script es selbst nicht benutzt (er reicht es trotzdem durch).

Anyway, aktuelle binutils (2.14) akzeptieren --{enable,disable}-nls.
Habe ich selbst vor ein paar Tagen erst durch.

> habs jetzt mal ohne probiert und der meckert irgendwas von einer
> enviorment variable CC an die gesetzt werden muss zu einem compiler.

CC bezeichnet im Makefile den C-Compiler.  Steht standardmäßig auf
»cc« (den C-Compiler eben).  Mußt Du ggf. auf gcc ändern, falls Dein
GCC sich nur als gcc, nicht aber als cc aufrufen läßt.

Aber wie gesagt: binutils müssen Dich nicht wirklich kümmern.  (Damit
widerspreche ich ausdrücklich Matthias W.)

Autor: Matthias (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

ich hab eben mal getestet ob der avrgcc aus winavr unter cygwin läuft.
Ich hatte vermutet das funktionert nicht Aufgrund der unterschiedlichen
dll-Version von winavr und dem aktuellen cygwin. Stimmt aber nicht.
Läuft. Also muß man unter cygwin keinen gcc für den AVR bauen.

Matthias

Autor: Minos (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also avrc lib kann ich jetzt mit den tools aus dem winavr packet
erstellen. sehr schönn..:D

>> was soll eigentlich dieses doppelt gepackte zeug? *.tar.bz2
>Es ist nicht doppelt gepackt. ;-)
gut zu wissen..:D

>> Warum willst Du eigentlich die binutils neu bauen?  Ich denke, Dich
>> interessiert vor allem avr-libc?  Du brauchst dafür wirklich keine
>> eigene Version von avr-gcc und avr-binutils.

brauchen tue ich es nicht wirklich im moment, aber wie es momentan
ausschaut wird es bis zum nächsten winavr release noch etwas dauern und
ich möchte gerne nicht von erics release abhängig sein und somit möchte
ich alles was damit zu tun selber erstellen können.
darunter würde dann auch avr-dude fallen <- da bin ich ein echter fan
von.

> was heißt ,,versteht nicht''?  Diese configure Scripts können
> normalerweise beliebige --enable-foo bzw. --disable-foo Argumente
> entgegennehmen, selbst dann, wenn sie damit selbst nichts anfangen
> können.

war wohl mein fehler. jetzt gehts es zumindest.
aber die binutils kann ich immer noch nicht erstellen.
die var CC ist  gesetzt aber der meckert was con cc1 an.
mir ist blos aufgefallen das der gcc gar nicht im cygwin erhalten ist
und ich habe den somit aus winavr raus kopiert ( gcc.exe ) und ins bin
verzeichnins vom cygwin gelegt.

Autor: Jörg Wunsch (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> mir ist blos aufgefallen das der gcc gar nicht im cygwin erhalten
> ist

Muß es auch geben, klar.

> und ich habe den somit aus winavr raus kopiert ( gcc.exe ) und ins
> bin verzeichnins vom cygwin gelegt.

Das kann wohl nicht funktionieren, der wird seinen Kram woanders
erwarten.  Das Kommando cc (bzw. gcc) ist ja nur der Compilertreiber,
der die einzelnen Schritte (Präprozessor, eigentlicher Compiler,
Assembler, Linker) aufruft.  Optional kann er noch eine
Konfigurationsdatei brauchen ("specs" genannt).

Schau Dir Cygwin nochmal genau an, die development tools sind da
garantiert in irgendeinem Subpackage.

Autor: Minos (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
so schnauz voll vom cygwin.

ich benutze jetzt den mingw mit dem minsys.
der kann wenigensten schon mal die Konfiguration fehler frei
erstellen. blos der make befehl steigt irgendwann hier mit aus:

rm -f targmatch.h
sed -f ./targmatch.sed < ./config.bfd > targmatch.new
sed: file ./targmatch.sed line 1: Extra characters after command
make[3] *** [targmatch.h] Error 1
make[3] Leaving directory `/home/minos/binutils-2.14/bfd'
make[3] *** [all-recursive] Error 1
make[3] Leaving directory `/home/minos/binutils-2.14/bfd'
make[3] *** [all-recursive-am] Error 2
make[3] Leaving directory `/home/minos/binutils-2.14/bfd'
make ** [all-bfd] Error 2

Autor: Minos (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
so..nu gehts..

Autor: Jörg Wunsch (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Was war's denn?  Der sed-Fehler riecht mir verdammt nach
Zeilenende-Problem (LF vs. CR-LF).

Autor: Minos (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
yo..richtig. da ich den kram mit meinem winzip entpackt habe, hat der
die Linefeeds nicht unix gerecht gelassen sondern umformatiert.

bin dann mit dem dos2unix tool drüber gegangen und alles war wieder ok.
werde in zukunft das besser nicht mehr mit winzip machen.

Autor: Minos (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
p.s. klappt jetzt alles prima. werde mich morgen mal ranmachen und den
gcc selber versuchen für den avr zu erstellen.
blos ich weiss noch nicht so genau welche packages ich alle brauche und
welche nicht.

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.