Возможно иметь две версии GCC для сосуществования: собственная версия окон MinGW и cygwin версия Linux? Вещи становятся проблематичными, когда на Cygwin система пытается скомпилировать с версией MinGW GCC, и наоборот. Как я могу сохранить обе версии GCC?
Психическая отладка предполагает, что у вас есть один или оба на вашем глобальном пути. Уберите оба из вашего глобального пути (gcc должен выдать «неверную команду или имя файла» или аналогичный запуск непосредственно из cmd.exe) и настройте ярлыки, чтобы они загружали правильную среду для каждого.
У меня есть оба из них установлены и мирно сосуществуют. Cygwin установлен в c: \ cygwin, а MinGW установлен в c: \ msys \ mingw. Мне не пришлось делать ничего необычного, чтобы заставить их сосуществовать, поскольку их среды устанавливаются соответствующими ярлыками запуска.
В вашей установке должен быть какой-то конкретный шаг, который заставил их каким-то образом соединиться. Если вы опишете последовательность и места установки, возможно, кто-нибудь даст дополнительный совет.
Способ, которым я держу их отдельно, заключается в использовании по умолчанию исключительно среды 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
Настройте PATH по своему вкусу. Единственная важная вещь в этом сценарии - это то, что он ставит каталог bin MinGW впереди каталога bin Cygwin. Вероятно, вам все еще нужен каталог Cygwin bin в PATH для vi, ls и т.д.
Последняя строка этого сценария запускает этот сценарий, ~/.mingwrc
:
alias make=mingw32-make
PS1='MinGW: \W \$ '
Вы не можете объединить эти два сценария из-за того, как работает Bash. Второй сценарий содержит действия, которые могут произойти только после запуска "оболочки MinGW". Назначение PS1 напоминает вам, что вы находитесь в оболочке MinGW, а псевдоним гарантирует, что ввод "make" запустит собственную программу make(1) MinGW, а не Cygwin, поскольку мои Make-файлы MinGW используют команды DOS, а не команды оболочки Bourne, и это одно из отличий порта GNU make в MinGW. Если вы хотите использовать компилятор MinGW с Cygwin make, опустите эту строку псевдонима.
Когда вы "выходите" из под-оболочки MinGW, вы восстанавливаете прежние PS1, PATH и псевдонимы.