2010-06-15 20 views
6

Es ist möglich, zwei Versionen von GCC nebeneinander zu haben: die native Windows MinGW Version und die cygwin Linux Version? Dinge werden problematisch, wenn auf Cygwin das System versucht, mit der MinGW-Version von GCC zu kompilieren, und umgekehrt. Wie kann ich beide Versionen von GCC behalten?GCC auf Cygwin koexistiert mit MinGW

Antwort

3

Psychisches Debugging schlägt vor, dass Sie einen oder beide in Ihrem globalen Pfad haben. Nehmen Sie beide aus Ihrem globalen Pfad heraus (gcc sollte "bad command or file name" oder ähnliches direkt von cmd.exe ausführen) und richten Sie die Verknüpfungen ein, damit sie die richtige Umgebung für jede laden.

4

Ich habe beide installiert und koexistieren friedlich. Cygwin wird in c: \ cygwin installiert, während MinGW in c: \ msys \ mingw installiert wird. Ich musste nichts Ungewöhnliches tun, um sie koexistieren zu lassen, da ihre Umgebungen durch ihre jeweiligen Start-Shortcuts festgelegt wurden.

Es muss einen bestimmten Schritt in Ihrer Installation geben, der dazu führte, dass sie in irgendeiner Weise gekoppelt wurden. Wenn Sie Ihre Installationsreihenfolge und Standorte beschreiben, kann möglicherweise jemand weitere Ratschläge geben.

4

Die Art, wie ich sie getrennt halte, ist die ausschließliche Verwendung der Cygwin-Umgebung. Das MinGW-Zeugs befindet sich nicht in meinem Standardpfad, und ich verwende keine MSYS-Programme. Für den täglichen Gebrauch können Sie nicht sagen, dass ich MinGW installiert habe.

In den seltenen Fällen, wenn ich etwas mit MinGW testen müssen, ich laufe diesen Shell-Skript aus der Cygwin Bash-Eingabeaufforderung, die ich mingw nennen:

#!/bin/sh 
PATH=/cygpath/c/mingw/bin:/cygpath/c/windows/system32:/cygpath/c/cygwin/bin 
echo "Say 'exit' to leave MinGW shell and restore Cygwin environment." 
/usr/bin/bash --rcfile ~/.mingwrc 

die PATH anpassen zu schmecken. Die einzige wichtige Sache dabei ist, dass es das MinGW Bin-Verzeichnis vor das Cygwin-Bin-Verzeichnis stellt. Sie wollen wahrscheinlich noch das Cygwin bin-Verzeichnis in der PATH für vi, ls usw.

Die letzte Zeile des Skripts dieses Skript ausgeführt wird, ~/.mingwrc:

alias make=mingw32-make 
PS1='MinGW: \W \$ ' 

Sie können nicht kombinieren diese beiden Skripte durch wie Bash funktioniert. Das zweite Skript enthält Dinge, die nur passieren können, wenn die "MinGW-Shell" läuft. Die PS1-Zuweisung erinnert Sie daran, dass Sie in einer MinGW-Shell sind, und der Alias ​​stellt sicher, dass "make" MinGWs eigenes make (1) -Programm anstelle von Cygwins ausführt, da meine MinGW-Makefiles DOS-Befehle und keine Bourne-Shell-Befehle verwenden ist einer der Unterschiede im MinGW-Port von GNU make. Sie würden diese Alias-Zeile verlassen, wenn Sie den MinGW-Compiler mit Cygwin make verwenden möchten.

Wenn Sie die MinGW-Subshell verlassen, werden die vorherigen PS1, PATH und Aliasnamen wiederhergestellt.

3

Nimm beide aus dem globalen Pfad heraus. Dann eine neue *.cmd-Datei mit dem folgenden erstellen (dauert Cygwin als Beispiel):

@echo off 
rem file: start cmd with cygwin's path 
cmd.exe /k path=C:\cygwin\bin;%path% 

Sie path im Befehlsfenster eingeben zu überprüfen.

Jetzt können Sie mit Cygwin arbeiten. Die Umgebung ist nur innerhalb der cmd.exe gültig.

+0

Beste Antwort für mich. – iab

Verwandte Themen