2010-06-04 101 views
8

我已经在我的系统上安装了Cygwin。但是,当我尝试使用gcc命令它说:在cygwin中运行gcc

bash: gcc: command not found

任何人都可以向我提供的解决方案吗?

回答

2

几件事情:

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

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

这是不太可能是因为您的错误消息从bash本身来是最后一个,所以我敢肯定这是你如何运行它。

看一看,以确保你从bash内有/usr/bin/gcc和你的路径包括/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或主目录中的等效路径。

3

这可能是因为您错过了编译器前缀

默认情况下,大多数makefile将要寻找gcc.exe。如果你使用的是不同的编译器,比如说i686-pc-mingw32-gcc.exe,那么make不会找到它,除非你告诉它。你可以这样做

PREFIX=i686-pc-mingw32- 

make CC=${PREFIX}gcc 

Using Linux Binaries

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。

4

可能在Cygwin的安装过程中,您还没有选择gcc,gdb和make软件包。因此,请尝试按照此Resolving gcc command not found链接中给出的步骤操作。愿你的问题得到解决。

我有同样的问题,它使用上述步骤解决。

+1

该链接已死亡,如果您仍然拥有它们,可以引入相关步骤。 – Nathan 2016-08-01 16:14:29

0

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

要从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的安装程序&检查从网络安装到从网页库中添加软件包,并添加MinGW的-GCC-G ++ &的MinGW-binutils的。编译你的代码:g ++ hello.cpp -o你好

如果使用gcc实用程序代替编译命令:gcc hello.cpp -o hello -lstdC++ ...来获得你的可执行文件。

只要您安装了gcc或mingw,并且C++包含文件的路径位于您的路径环境中,那么这些命令将起作用。

0

还有一个很难发现的错误也可能导致这个错误,

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

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