Forum: Compiler & IDEs Mingw und Cygwin


von Minos (Gast)


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 !

von Jörg Wunsch (Gast)


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.

von BernhardT (Gast)


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

von Jörg Wunsch (Gast)


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.

von Minos (Gast)


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

von Matthias (Gast)


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

von Jörg Wunsch (Gast)


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.

von Minos (Gast)


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

von Jörg Wunsch (Gast)


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.

von Minos (Gast)


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

von Jörg Wunsch (Gast)


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

von Matthias (Gast)


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

von Minos (Gast)


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.

von Jörg Wunsch (Gast)


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.

von Minos (Gast)


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

von Minos (Gast)


Lesenswert?

so..nu gehts..

von Jörg Wunsch (Gast)


Lesenswert?

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

von Minos (Gast)


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.

von Minos (Gast)


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.

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.