Cygwin GCC + WinXP cmd.exe什么都不做

时间:2010-06-06 22:46:19

标签: shell gcc cygwin

我的基本问题是,如果我从Windows命令行(Windows XP中的cmd.exe)运行GCC并且它什么都不做:没有.o文件创建,没有错误消息,什么都没有。如果我使用DOS风格的路径,它只会抛出一条错误消息,但没有别的。当我从Cygwin shell运行时,它将针对源中的错误抛出错误消息,并根据需要生成.o文件。从DOS命令行使用'make'也不起作用。有没有人遇到过这种行为?

2 个答案:

答案 0 :(得分:2)

我实际上已经取得了一些进展。背景:

我安装了WinAVR,并在我的PATH中设置了bin目录。 WinAVR是GCC和相关的开发工具,但适用于AVR 8位微控制器。它与常规GCC共享许多实用程序名称。

过去我记得Cygwin将其bin目录放在PATH中。这次似乎没有这样做,所以我将'C:\ cygwin \ bin'放入PATH,然后将'C:\ cygwin \ usr \ bin'放在那里。

Cygwin的最新版本在处理文件方面存在问题。基本上,gcc.exe不是可执行文件,而是一种实际可执行文件的符号链接(根据你安装的内容,它是gcc-3.exe或gcc-4.exe)。在BASH shell中,这些符号链接很容易解析,在cmd.exe中它们不是。这意味着如果您尝试将“gcc”作为命令输入cmd.exe,它将响应“访问被拒绝”。解决方案是调用实际的GCC文件名(gcc-4)而不是符号链接。

解决方案似乎是通过重新安排我的PATH来实现的。要编辑PATH环境变量,请右键单击“我的电脑”,然后转到属性,然后转到“高级”,再转到“环境变量”。在“系统变量”下找到“路径”并双击它进行编辑。删除所有包含C:\ cygwin的条目,然后转到PATH的FRONT并在那里输入。对我来说,它是C:\ cygwin \ bin和C:\ cygwin \ usr \ bin。对我来说重要的部分是确保Cygwin条目在WinAVR条目之前。我注意到当我尝试在cmd.exe中调用'make'时,它调用了WinAVR版本而不是Cygwin版本。这导致我重新安排我的路径,在一些愚弄之后,很明显使用cmd.exe shell中的gcc-4工作了。然后它也在Code :: Blocks中工作,我就离开了。

或者,它可能刚刚从其他东西中完全修复。计算机有办法做到这一点。

答案 1 :(得分:0)

或者你可以删除文件:gcc.exe这是一个文件链接并重命名 实际的gcc可执行文件:gcc-3.exe(或gcc-4.exe取决于你的版本)到gcc.exe