GCC на Cygwin сосуществует с MinGW - PullRequest
5 голосов
/ 15 июня 2010

Возможно сосуществовать две версии GCC: версия Windows MinGW для Windows и версия Cygwin для Linux? Все становится проблематично, когда в Cygwin система пытается скомпилировать версию MinGW GCC, и наоборот. Как мне сохранить обе версии GCC?

Ответы [ 5 ]

4 голосов
/ 16 июня 2010

Способ, которым я храню их отдельно, - это использование среды Cygwin исключительно по умолчанию.Материал MinGW отсутствует в моем стандартном PATH, и я не использую никаких программ MSYS.Для повседневного использования вы не можете сказать, что у меня вообще установлен MinGW.

В тех редких случаях, когда мне нужно что-то протестировать с MinGW, я запускаю этот сценарий оболочки из приглашения Cygwin Bash, которое я называюmingw:

#!/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

Отрегулируйте ПУТЬ по вкусу.Единственная важная вещь в этом - то, что это помещает каталог bin MinGW перед каталогом bin Cygwin.Вам, вероятно, все еще нужен каталог bin Cygwin в PATH для vi, ls и т. Д.

Последняя строка этого скрипта запускает этот скрипт: ~/.mingwrc:

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

Вы можете 'Объединение этих двух скриптов связано с тем, как работает Bash.Второй скрипт содержит вещи, которые могут произойти только после запуска «оболочки MinGW».Назначение PS1 напоминает вам, что вы находитесь в оболочке MinGW, а псевдоним гарантирует, что при наборе «make» вместо Cygwin запускается собственная программа make (1) MinGW, поскольку в моих файлах сборки MinGW используются команды DOS, а не команды оболочки Bourne, и этоэто одно из различий в порте GNU MinGW.Если вы хотите использовать компилятор MinGW с Cygwin make, вы бы оставили эту строку псевдонимов.

Когда вы «выходите» из под-оболочки MinGW, вы восстанавливаете свои предыдущие PS1, PATH и псевдонимы.

4 голосов
/ 15 июня 2010

У меня они оба установлены и мирно сосуществуют.Cygwin установлен в c: \ cygwin, а MinGW установлен в c: \ msys \ mingw.Мне не нужно было делать ничего необычного, чтобы заставить их сосуществовать, поскольку их окружение задается соответствующими ярлыками запуска.

В вашей установке должен быть какой-то определенный шаг, который заставил бы их каким-то образом стать связанными.Если вы опишите последовательность и место установки, возможно, кто-то может предложить дополнительные советы.

3 голосов
/ 13 ноября 2011

Уберите обоих с глобального пути. Затем создайте новый файл *.cmd со следующим (на примере Cygwin):

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

Вы можете ввести path в командном окне, чтобы проверить.

Теперь вы можете работать с Cygwin. Среда действительна только в пределах cmd.exe.

3 голосов
/ 15 июня 2010

Психическая отладка предполагает, что у вас есть один или оба на вашем глобальном пути.Удалите оба из вашего глобального пути (gcc должен выдавать «неверное имя команды или файла» или аналогичный запуск непосредственно из cmd.exe) и настройте ярлыки, чтобы они загружали подходящую среду для каждого.

0 голосов
/ 19 октября 2018

Если оба они установлены, это не причинит вреда, все равно что иметь 2 набора файлов на диске. По-видимому, это даже не сталкивается легко.

Значение по умолчанию выбрано в переменной пути, то есть, которое является вершиной другого (обратите внимание, что это допустимо для выполнения оболочки).

В качестве альтернативы, значения по умолчанию могут быть указаны в соответствующих IDE. Для меня ранее был установлен mingw, для которого были настроены кодовые блоки. Но позже, когда я установил Cygwin, я изменил путь и сделал его более приоритетным, mingw прекрасно работал с кодовыми блоками.

...