有两个版本的GCC可以共存:原生Windows MinGW版本和cygwin linux版本?在Cygwin上系统尝试使用MinGW版本的GCC进行编译时会出现问题,反之亦然.如何保留两个版本的GCC?
心理调试建议您的全局路径中有一个或两个。将两者从全局路径中取出(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
Run Code Online (Sandbox Code Playgroud)
根据口味调整 PATH。唯一重要的是它将 MinGW bin 目录放在 Cygwin bin 目录之前。您可能仍然需要 PATH 中的 Cygwin bin 目录用于 vi、ls 等。
该脚本的最后一行运行该脚本~/.mingwrc:
alias make=mingw32-make
PS1='MinGW: \W \$ '
Run Code Online (Sandbox Code Playgroud)
由于 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 和别名。