在cygwin中运行gcc

时间:2010-06-04 11:13:33

标签: gcc cygwin

我在我的系统上安装了 Cygwin 。但是当我尝试使用gcc命令时,它说:

bash: gcc: command not found

有人能为我提供解决方案吗?

6 个答案:

答案 0 :(得分:16)

在我的安装中,也没有通用的gcc命令,所以我为它做了一个符号链接:

cd /usr/bin
ln -s i686-pc-cygwin-gcc-3.4.4.exe gcc

现在通过执行which gcc来检查它是否有效,它应该为您提供/usr/bin/gcc,然后gcc应该为您提供gcc: no input files。请注意您的i686-pc-cygwin-gcc-3.4.4.exe版本可能有所不同。检入/ usr / bin。

答案 1 :(得分:4)

也许在安装Cygwin时你没有选择gcc,gdb和make packages。

我遇到了同样的问题,在我选择了上述软件包之后就解决了。

答案 2 :(得分:3)

这可能是因为您缺少编译器前缀

默认情况下,大多数makefile都会查找gcc.exe。如果您使用的是其他编译器,请说i686-pc-mingw32-gcc.exe,那么make除非您说明,否则不会找到它。你可以做点什么

PREFIX=i686-pc-mingw32-

make CC=${PREFIX}gcc

Using Linux Binaries

答案 3 :(得分:2)

有几件事:

  • 我总是安装整个 Cygwin包。早期的版本遇到了现在修复的依赖性问题,我相信,但它仍然是一个好习惯。你永远不知道什么时候你可能需要最深奥的Cygwin。

  • 您可能需要更改路径。如果您在Cygwin bash shell中运行,通常可以找到所有工具,但cmd.exe不一定如此。

由于您的错误消息来自bash本身,因此不太可能是最后一个,因此我非常确定您是如何运行它的。

请确保/usr/bin/gcc内有bash,并且您的路径包含/usr/bin某处:

pax> echo $PATH
/usr/local/bin:/usr/bin:/bin:/cygdrive/c/WINDOWS/system32:/cygdrive/c/WINDOWS

pax> which gcc
/usr/bin/gcc

如果不存在,请返回并重新安装所有内容(如果您不想要所有内容,请重新安装相关的开发包)。如果它在那里并且您的路径没有其位置,请在/etc/profile或主目录中的等效文件中更改路径。

答案 4 :(得分:0)

此处未提及的另一个相关问题是,命令行中编译器需要更新环境路径变量以查找c ++头文件的位置。在Windows中,您可以使用“高级系统属性”GUI更新路径环境,并添加c ++包含文件的位置。这将更新Windows cmd&中的PATH环境变量。 Cygwin在重新启动shell时自动运行。

从Linux或Cygwin shell类型更新PATH ... PATH = $ PATH:/ your_path_here示例:PATH = $ PATH:/cygdrive/c/cygwin/lib/gcc/i686-pc-mingw32/4.7。 3 / include / c ++同样最好只添加include目录:PATH = $ PATH:/cygdrive/c/cygwin/lib/gcc/i686-pc-mingw32/4.7.3/include/ ...或者检查安装包含文件位置的正确目录,我建议安装mingw用于Cygwin,这是用g ++编写的。

要在Cygwin中安装其他所需的软件包,请重新运行Cygwin安装实用程序&检查从Internet安装以从Web存储库添加包并添加mingw-gcc-g ++& MinGW的-binutils的。编译代码:g ++ hello.cpp -o hello

如果使用gcc实用程序,请使用以下命令编译:gcc hello.cpp -o hello -lstdc ++ ...以获取可执行文件。

只要安装了gcc或mingw,并且路径环境中包含c ++包含文件的路径,命令就可以正常工作。

答案 5 :(得分:0)

另一个难以发现的错误也可能导致此错误,

如果您的Makefile使用PATH作为变量,则可能会发生gcc not found错误 这是因为它会暂时更改系统路径。

我花了很多时间检查cygwin环境设置以发现这一点,所以我将它留在这里,以防这有助于任何人在这里找到他们的方式。