可以有两个版本的GCC共存:原生Windows MinGW版本和cygwin linux版本?在Cygwin上系统尝试使用MinGW版本的GCC进行编译时会出现问题,反之亦然。我怎样才能保留两个版本的GCC?
答案 0 :(得分:4)
我安装了两个并且和平共处。 Cygwin安装在c:\ cygwin中,而MinGW安装在c:\ msys \ mingw中。我没有做任何不寻常的事情让它们共存,因为它们的环境是由它们各自的启动快捷方式设定的。
您的安装中必须有一些特定步骤导致它们以某种方式耦合。如果您描述安装顺序和位置,也许某人可以提供其他建议。
答案 1 :(得分:4)
我将它们分开的方法是默认使用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
根据味道调整PATH。唯一重要的是它将MinGW bin目录放在Cygwin bin目录之前。您可能仍希望PATH中的Cygwin bin目录为vi,ls等。
该脚本的最后一行运行此脚本~/.mingwrc
:
alias make=mingw32-make
PS1='MinGW: \W \$ '
由于Bash的工作方式,您无法合并这两个脚本。第二个脚本包含只有在“MinGW shell”运行时才会发生的事情。 PS1赋值提醒你,你在MinGW shell中,别名确保键入“make”运行MinGW自己的make(1)程序而不是Cygwin,因为我的MinGW Makefile使用DOS命令,而不是Bourne shell命令,这个是GNU make MinGW端口的差异之一。如果要将MinGW编译器与Cygwin make一起使用,则可以保留该别名行。
当您从MinGW子shell“退出”时,您将恢复以前的PS1,PATH和别名。
答案 2 :(得分:3)
心理调试表明你的全球道路中有一个或两个。将两者从全局路径中取出(gcc应该产生“错误的命令或文件名”或类似的直接从cmd.exe运行)并设置快捷方式,以便为每个快捷方式加载适当的环境。
答案 3 :(得分:3)
将两者都摆脱全球化的道路。然后使用以下内容创建一个新的*.cmd
文件(以Cygwin为例):
@echo off
rem file: start cmd with cygwin's path
cmd.exe /k path=C:\cygwin\bin;%path%
您可以在命令窗口中键入path
进行检查。
现在你可以使用cygwin了。环境仅在cmd.exe
内有效。
答案 4 :(得分:0)
同时安装这两个文件不会造成任何损害,就像在磁盘上拥有两组文件一样。显然,它甚至不容易冲突。
在path变量中选择了默认的一个,即,一个是另一个的顶部(请注意,这对于shell执行有效)。
或者,可以在相应的IDE中指定默认值。 对我来说,我以前安装了配置了代码块的mingw。但是后来,当我安装Cygwin时,我修改了路径并使其具有更高的优先级mingw可以完美地使用代码块。