是否可以同时存在两个版本的GCC:本地Windows MinGW版本和Cygwin Linux版本?当系统尝试使用MinGW版本的GCC在Cygwin上编译时,情况会变得棘手,反之亦然。如何保留两个版本的GCC?
我将它们分开使用的方法是默认独占使用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 \$ '
心灵调试建议您在全局路径中有一个或两个。将它们从全局路径中移除(gcc应该会产生“坏命令或文件名”或类似的运行直接从cmd.exe),并设置快捷方式,使它们加载每个正确的环境。
将两者从全局路径中移除。然后创建一个新的*.cmd
文件,内容如下(以Cygwin为例):
@echo off
rem file: start cmd with cygwin's path
cmd.exe /k path=C:\cygwin\bin;%path%
您可以在命令窗口中输入path
以进行检查。
现在您可以使用cygwin。该环境仅在cmd.exe
内有效。
同时安装它们并不会造成任何伤害,就像在磁盘上有两组文件一样。显然,它们甚至不容易冲突。
默认的那个被选中为路径变量,即哪一个是另一个的顶部(请注意,这对于 shell 执行是有效的)。
或者,在各自的 IDE 中可以指定默认值。对我来说,我之前安装了 mingw,并为其配置了 codeblocks。但后来当我安装 Cygwin 时,我修改了路径并使其优先级更高,mingw 就能和 codeblocks 完美运行。