在Cygwin上使用的GCC与MinGW共存

7

是否可以同时存在两个版本的GCC:本地Windows MinGW版本和Cygwin Linux版本?当系统尝试使用MinGW版本的GCC在Cygwin上编译时,情况会变得棘手,反之亦然。如何保留两个版本的GCC?

5个回答

5

我将它们分开使用的方法是默认独占使用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 Makefiles使用DOS命令,而不是Bourne shell命令,这是GNU make的MinGW端口中的区别之一。如果您想要使用Cygwin make与MinGW编译器,则可以省略该别名行。
当您从MinGW子shell中“退出”时,您会恢复以前的PS1、PATH和别名。

5

心灵调试建议您在全局路径中有一个或两个。将它们从全局路径中移除(gcc应该会产生“坏命令或文件名”或类似的运行直接从cmd.exe),并设置快捷方式,使它们加载每个正确的环境。


4
我已经将它们都安装好了,它们可以和平共存。Cygwin安装在c:\cygwin,而MinGW安装在c:\msys\mingw。我没有做任何不寻常的事情来使它们共存,因为它们各自的启动快捷方式设置了它们的环境。
你的安装过程中一定有某个特定的步骤导致它们以某种方式耦合。如果你描述一下你的安装顺序和位置,也许有人可以提供额外的建议。

4

将两者从全局路径中移除。然后创建一个新的*.cmd文件,内容如下(以Cygwin为例):

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

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

现在您可以使用cygwin。该环境仅在cmd.exe内有效。


1

同时安装它们并不会造成任何伤害,就像在磁盘上有两组文件一样。显然,它们甚至不容易冲突。

默认的那个被选中为路径变量,即哪一个是另一个的顶部(请注意,这对于 shell 执行是有效的)。

或者,在各自的 IDE 中可以指定默认值。对我来说,我之前安装了 mingw,并为其配置了 codeblocks。但后来当我安装 Cygwin 时,我修改了路径并使其优先级更高,mingw 就能和 codeblocks 完美运行。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接