使用Cygwin编译C程序;执行错误

时间:2009-06-18 16:16:52

标签: c gcc cygwin

我注册了计算机科学硕士课程。该课程使用C,如果我们使用Windows,教师希望我们使用Cygwin来编译程序。

我已经下载并安装了Cygwin,我确保已经安装了GCC compiler

但我不知道从哪里开始。我需要编译一个具有基本包含的单个源文件。

#include <stdio.h> 

让我们假设文件在我的桌面上(它不是,但为了参数)。如何从bash shell导航到桌面?我假设一旦我在bash中导航到正确的位置,我只需执行:

gcc myProgram.c -o myProgram

更新:按照下面发布的不同说明,我可以编译程序;我为此感谢你。但是当我执行生成的二进制文件时,我得到以下内容。如何编译或执行此程序,以便我没有收到错误?再次,谢谢。

This application has failed to start because cygwin1.dll was not found. Re-installing the application may fix this problem.

12 个答案:

答案 0 :(得分:14)

当你从cygwin开始时,你就在你的$ HOME中,就像unix一般,它默认映射到c:/ cygwin / home / $ YOURNAME。所以你可以把所有东西放在那里。

你也可以从cygwin通过/ cygdrive / c /访问c:驱动器(例如/ cygdrive / c / Documents anb Settings / yourname / Desktop)。

答案 1 :(得分:9)

关于缺少cygwin1.dll 的更新问题。

从Cygwin终端检查,

ls /usr/bin/cygwin1.dll

如果不存在(我怀疑),您的安装没有正确完成。

然后,用

检查你的路径
echo $PATH

这将为:分隔路径列表。它必须包含/usr/bin。如果您发现丢失,请添加,

export PATH=/usr/bin:$PATH

最后,

  • 我希望您使用cygwin终端中的Cygwin(Cygwin安装的小绿色+黑色图标)或MinTTY(如果安装了它)。
  • 并且,您还没有将已编译的EXE移动到没有安装Cygwin的其他计算机上(如果您这样做,则需要将cygwin1.dll携带到该计算机上 - 将其保存在与该计算机相同的文件夹中编译EXE)。

答案 2 :(得分:4)

寻找(即cd至)

/cygdrive/c/

通常是您的C:\


另请查看Using CygwinLifehacker introduction (June/2006)和此biomed page at PhysioNet

答案 3 :(得分:4)

总结一下,这里有一些导航到目录并使用Cygwin和Windows Vista编译代码的命令:

  1. 启动Cygwin shell。
  2. 在提示符处,使用cd更改为相应的目录:

    $ cd / cygdrive / c / Users / nate / Desktop

  3. 使用ls列出目录中的文件:

    $ ls

    prog.c中

  4. 使用gcc命令编译此目录中的文件:

    $ gcc prog.c -o prog

  5. 如果您没有看到任何错误,您应该能够运行生成的程序:

    $ ./prog

  6. <强>更新

    对于“Cygwin1.dll not found”错误,我喜欢Nik的回答。您还可以查看this related post about cygwin1.dll not found,建议在您的Windows PATH中添加c:\cygwin\bin\

    Windows XP有instructions on how to change the Windows PATH variable,在Vista上我认为它类似。

    1. 转到控制面板 - &gt;系统
    2. 选择高级系统设置
    3. 点击高级标签
    4. 点击环境变量
    5. 系统变量下,找到路径条目,然后点击修改
    6. c:\cygwin\bin添加到列表中,确保使用分号将其与之前的任何项目分开

答案 4 :(得分:4)

关于cygwin1.dll未找到错误,我使用了至少8年的解决方案是将Cygwin bin目录添加到我的计算机中%PATH%的末尾 - &gt;属性 - &gt;高级 - &gt;环境变量。我将它们添加到路径的末尾,所以在我的正常工作中,最后搜索它们,最大限度地减少冲突的可能性(实际上,我一直没有遇到冲突问题)。

当您调用Cygwin Bash Shell时,这些目录会被添加到%PATH%前面,所以一切都在该环境中按预期工作。

如果没有在Cygwin shell中运行,我的%PATH%就是:

Path=c:\opt\perl\bin; \
     ...
     C:\opt\cygwin\bin; \
     C:\opt\cygwin\usr\bin; \
     C:\opt\cygwin\usr\local\bin;

这样,例如,当我不在Cygwin Shell中时,首先找到ActiveState Perl的perl,但是当我在Cygwin Shell中工作时会找到Cygwin perl。

答案 5 :(得分:2)

如果您对bash不满意,可以继续使用标准的Windows命令(即DOS)shell。

要使其工作,您必须将C:\ cygwin \ bin(或您的本地替代)添加到Windows PATH变量。

完成后,您可以:     1)打开命令(DOS)shell     2)将目录更改为代码的位置(c:,然后cd path \ to \ file)     3)gcc myProgram.c -o myProgram

正如nik的回复中所提到的,“使用Cygwin”文档是了解更多内容的好地方。

答案 6 :(得分:1)

cygwin下的Windows路径C:\src变为/cygdrive/c/src

答案 7 :(得分:1)

如果您只是执行gcc program.c -o program -mno-cygwin,它将编译得很好,您不需要将cygwin1.dll添加到您的路径中,您可以继续将可执行文件分发到计算机它没有安装cygwin,它仍然会运行。希望这有帮助

答案 8 :(得分:0)

使用Cygwin编译C程序

我们将使用Cygwin上的gcc编译器来编译程序。

1)启动Cygwin

2)键入

,切换到为此课程创建的目录

cd c:/ windows / desktop

3)输入

编译程序

gcc myProgram.c -o myProgram

命令gcc调用gcc编译器来编译你的C程序。

答案 9 :(得分:0)

您最好在cygwin shell中编辑文件。通常,启动时它具有默认用户目录。您可以从shell编辑文件,例如“vi somefile.c”或“emacs somefile.c”。这是假设在cygwin中安装了vi或emacs。

如果要在桌面上存档,则必须转到类似(在XP上)到“/ cygwindrive / c / Documents \和\ Settings / Frank / Desktop”的路径(如果内存正常供应)。只需cd到该路径,然后在文件上运行命令。

答案 10 :(得分:0)

Cygwin非常酷!您可以从其他系统(例如Linux),编译程序,它们将起作用。我甚至在谈论通信程序或网络服务器。

这是一招。如果您在Windows文件资源管理器中查看文件,可以在bash窗口中键入“cd”,然后从资源管理器的地址栏拖动到cygwin窗口,完整路径将被复制!顺便说一句,这也适用于Windows命令shell。

另外:虽然“cd / cygdrive / c”是正式路径,但它也会接受“cd c:”作为快捷方式。在拖动路径的其余部分之前,您可能需要执行此操作。

应该自动找到stdio.h文件,就像传统系统一样。

答案 11 :(得分:0)

此文件(cygwin1.dll)是类似于qt依赖的cygwin依赖项。您必须复制此文件和此类消息中出现的类似文件错误,来自&#34; cygwin / bin&#34;到你的程序的文件夹。此外,有必要在另一台没有cygwin的计算机上运行!