Forum: Compiler & IDEs cygwin: andren gcc setzen


von olpo (Gast)


Lesenswert?

Hallo,
Anfängerfrage,

ich benutze Win7 und dort wurden ARM Compiler von einer SDK installiert.
Jetzt möchte ich mit Cygwin auf die ARM Compiler zugreifen.
Momentan kennt Cygwin gar kein gcc.
1
$ gcc
2
-bash: gcc: Kommando nicht gefunden.

Ich habe bereits eine Pfad angelegt:
1
$ export PATH=$PATH:/cygdrive/c/SDK/gnu/arm/nt/bin/

Aber wie verklicker ich Cygwin jetzt, daß er bei einem gcc-Aufruf in 
../bin nachschauen soll?
Außerdem befinden sich zwei Compiler im /bin. arm-eabi & 
arm-linux-gnueabi.
Wie kann ich geschickt zwischen den beiden auswählen, bevor gcc 
aufgerufen wird?

Danke

von Eduard S. (schneehase)


Lesenswert?

Ich gehe mal davon aus, dass du ein Makefile benutzt. Und wenn nicht, 
leg dir eins an. Beide Versionen vom gcc in PATH eintragen.

Dann kannst du einfach mit
1
make CC=arm-eabi-gcc
oder mit
1
make CC=arm-linux-gnueabi-gcc
deinen Code erstellen

Wie du ein Makefile erstellst googlest du am besten (makefile tutorial 
deutsch).

Nur zur info gcc (ohne arm-eabi, aka Host/Target settings) benutzt du 
nur, um Programme zu erstellen die auf dem Rechner laufen sollen auf dem 
sie erstellt werden.

von Jim M. (turboj)


Lesenswert?

olpo schrieb:
> $ export PATH=$PATH:/cygdrive/c/SDK/gnu/arm/nt/bin/

Falschherum. Es muss
1
export PATH=/cygdrive/c/SDK/gnu/arm/nt/bin/:$PATH

sein, sonst würde er einen anderen GCC im Pfad benutzen.

von Klaus F. (kfalser)


Lesenswert?

olpo schrieb:
> Aber wie verklicker ich Cygwin jetzt, daß er bei einem gcc-Aufruf in
> ../bin nachschauen soll?

Das ist nicht so schlau.
gcc sollte weiterhin auf den nativen compiler (falls installiert) 
zeigen.
Der Cross-Compiler hat deshalb normalerweise einen anderen Namen, z.B. 
avr-gcc oder in in deinem Fall vielleicht arm-eabi-gcc und unter diesen 
Namen wird er aufgerufen.

Beim compilieren mit make gibt es ein Makro CC, das normalerweise auf 
gcc zeigt.
Beim Cross-compilieren kann man einfach das Macro überschreiben, so wie 
es Eduard beschrieben hat oder man fügt eine neue Regel ein

.c.o:
             arm-eabi-gcc -c $(CFLAGS) $(CPPFLAGS) -o $@ $<

mit der man die vordefinierte Regel zum compilieren von c-Files 
überschreibt.

Die Reihenfoge im Pfad hat übrigens nicht zur Sache, weil der 
Cross-Compiler einen anderen Namen hat. Wichtig ist nur, dass das 
Verzeichnis im Pfad ist, damit er überhaupt gefunden werden kann.

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.