Cygwin与MinGW共存的GCC

Cygwin与MinGW共存的GCC,cygwin,mingw,Cygwin,Mingw,有可能有两个版本的GCC共存:原生windows MinGW版本和cygwin linux版本?在Cygwin上,当系统尝试使用GCC的MinGW版本进行编译时,就会出现问题,反之亦然。如何保持两个版本的GCC?我已经安装了这两个版本,并且它们和平共存。Cygwin安装在c:\Cygwin中,而MinGW安装在c:\msys\MinGW中。我不必做任何不寻常的事情让它们共存,因为它们的环境是由各自的启动快捷方式设置的 在您的安装中一定有一些特定的步骤导致它们以某种方式耦合。如果您描述了您的安装顺

有可能有两个版本的GCC共存:原生windows MinGW版本和cygwin linux版本?在Cygwin上,当系统尝试使用GCC的MinGW版本进行编译时,就会出现问题,反之亦然。如何保持两个版本的GCC?

我已经安装了这两个版本,并且它们和平共存。Cygwin安装在c:\Cygwin中,而MinGW安装在c:\msys\MinGW中。我不必做任何不寻常的事情让它们共存,因为它们的环境是由各自的启动快捷方式设置的


在您的安装中一定有一些特定的步骤导致它们以某种方式耦合。如果您描述了您的安装顺序和位置,也许有人可以提供其他建议。

心理调试建议您的全局路径中有一个或两个。从全局路径(gcc应产生“错误的命令或文件名”或直接从cmd.exe运行的类似命令)中删除这两个选项,并设置快捷方式,以便它们为每个选项加载适当的环境。

我将它们分开的方式是默认情况下独占使用Cygwin环境。MinGW的东西不在我的默认路径中,我也不使用任何MSYS程序。对于日常使用,你根本看不出我安装了MinGW

在极少数情况下,当我需要使用MinGW测试某些东西时,我会从Cygwin Bash提示符运行这个shell脚本,我称之为
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
根据口味调整路径。唯一重要的是它将MinGW-bin目录置于Cygwin-bin目录之前。您可能仍然希望在vi、ls等的路径中包含Cygwin bin目录

该脚本的最后一行运行此脚本,
~/.mingwrc

alias make=mingw32-make
PS1='MinGW: \W \$ '
由于Bash的工作方式,您无法将这两个脚本组合在一起。第二个脚本包含只有在“mingwshell”运行时才能发生的事情。PS1分配提醒您在一个MinGW shell中,别名确保键入“make”运行MinGW自己的make(1)程序,而不是Cygwin的,因为我的MinGW make文件使用DOS命令,而不是Bourne shell命令,这是GNU make的MinGW端口的区别之一。如果要将MinGW编译器与Cygwin make一起使用,则可以省略该别名行


当您“退出”MinGW子shell时,您将恢复以前的PS1、路径和别名。

将它们都从全局路径中取出。然后使用以下内容创建一个新的
*.cmd
文件(以Cygwin为例):

您可以在命令窗口中键入
path
进行检查


现在你可以和cygwin一起工作了。环境仅在
cmd.exe中有效,安装这两个环境不会造成任何伤害,就像磁盘上有两组文件一样。显然它甚至不容易发生冲突

在path变量中选择默认值,即,哪一个是另一个的顶部(请注意,这对shell执行有效)

或者,可以在各自的IDE中指定默认值。 对我来说,我之前安装了mingw,为其配置了代码块。但后来当我安装Cygwin时,我修改了路径并使其具有更高的优先级,mingw完全可以与代码块一起工作

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