代码之家  ›  专栏  ›  技术社区  ›  Frank V

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

  •  15
  • Frank V  · 技术社区  · 15 年前

    我注册了计算机科学硕士课程。这门课是用C的,老师要我们用 Cygwin 如果我们使用Windows,则编译程序。

    我已经下载并安装了 赛文 我保证我已经安装了 GCC compiler .

    但我不知道从这里到哪里去。我需要编译一个具有基本include的源文件。

    #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 回复  |  直到 6 年前
        1
  •  14
  •   Sinan Ünür    15 年前

    当您在cygwin中开始时,您就在$home中,就像在UNIX中一样,它默认映射到c:/cygwin/home/$yourname。所以你可以把所有东西都放在那里。

    您还可以通过/cygdrive/c/(例如/cygdrive/c/documents anb settings/yourname/desktop)从cygwin访问c:drive。

        2
  •  9
  •   nik    15 年前

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

    从Cygwin终端检查,

    ls /usr/bin/cygwin1.dll
    

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

    然后,检查你的路径,

    echo $PATH
    

    这会给 : 路径的分隔列表。它必须包含 /usr/bin . 如果你发现丢失了,加上,

    export PATH=/usr/bin:$PATH
    

    最后,

    • 我希望您使用的是Cygwin终端(与Cygwin一起安装的绿色+黑色小图标)或Mintty(如果安装了它)。
    • 而且,您没有将已编译的exe移动到另一台未安装cygwin的计算机上(如果这样做,则需要将cygwin1.dll携带到该计算机上——将其与已编译的exe保存在同一文件夹中)。
        3
  •  4
  •   nik    15 年前

    寻找(也就是说, cd 到)

    /cygdrive/c/
    

    那通常是你的 C:\


    还看 Using Cygwin , the Lifehacker introduction (June/2006) 而且,这个 biomed page at PhysioNet .

        4
  •  4
  •   Sinan Ünür    15 年前

    关于 cygwin1.dll 找不到错误,我使用了至少8年的解决方案是将cygwin bin目录添加到 %PATH% 在“我的电脑”->属性->高级->环境变量中。我将它们添加到路径的末尾,这样在我的正常工作中,它们最后会被搜索,从而最小化冲突的可能性(事实上,我在这段时间内对冲突没有任何问题)。

    当您调用cygwin bash shell时,这些目录会预先添加到 %路径% 所以在那个环境中,所有的东西都能按预期工作。

    当不在Cygwin Shell中运行时, %路径% 是:

    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
  •  4
  •   Community CDub    8 年前

    总而言之,下面是一些使用cygwin和windows vista导航到目录并编译代码的命令:

    1. 启动cygwin shell。
    2. 在提示下,使用 cd 要更改到适当的目录:

      $cd/cygdrive/c/users/nate/桌面

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

      美元

      丙丙

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

      $GCC项目C-O项目

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

      $/PROG

    更新:

    为了“ Cygwin1.dll not found “错误,我喜欢尼克的回答。你也可以退房 this related post about cygwin1.dll not found ,建议增加 c:\cygwin\bin\ 到您的Windows路径。

    instructions on how to change the Windows PATH variable 对于Windows XP和Vista,我认为它们是相似的。

    1. 转到控制面板->系统
    2. 选择 高级系统设置
    3. 点击 先进的 标签
    4. 点击 环境变量
    5. 系统变量 找到 路径 进入和点击 编辑
    6. 添加 c:\cygwin\bin 到列表中,确保用分号将其与以前的任何项目分隔开
        6
  •  2
  •   Tim Henigan    15 年前

    如果您不熟悉bash,可以继续使用标准的windows命令(即dos)shell。

    要使其正常工作,您必须将C:\cygwin\bin(或您的本地选项)添加到Windows路径变量中。

    完成后,您可以: 1)打开命令(DOS)shell 2)将目录更改为代码的位置(C:,然后是CD路径\到\文件) 3)GCC myprogram.c-o myprogram

    正如nik的回复中提到的,“使用cygwin”文档是了解更多信息的好地方。

        7
  •  1
  •   devdimi    15 年前

    窗口路径 C:\src 在塞格温的统治下 /cygdrive/c/src

        8
  •  1
  •   HackTalk    15 年前

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

        9
  •  0
  •   joe    15 年前

    使用cygwin编译C程序

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

    1)启动Cygwin

    2)通过键入,更改为此类创建的目录

    CD C:/Windows/桌面

    3)通过键入编译程序

    gcc myprogram.c-o myprogram.我的程序

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

        10
  •  0
  •   Jay Atkinson    15 年前

    您最好在cygwin shell中编辑一个文件。通常,当您启动它时,它有默认的用户目录。你可以从shell中编辑一个文件,比如“vi somefile.c”或“emacs somefile.c”。假设vi或emacs安装在cygwin中。

    如果要在桌面上归档,则必须转到类似于(在xp上)的路径“/cygwindrive/c/documents\和\settings/frank/desktop”(如果内存正常)。只需cd到该路径,然后在文件上运行命令。

        11
  •  0
  •   gbarry    15 年前

    Cygwin很酷!您可以从其他系统(例如Linux)编译程序, 他们会工作的 . 我说的是通讯程序,甚至是网络服务器。

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

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

    应该自动找到stdio.h文件,就像在常规系统上一样。

        12
  •  0
  •   Maysam Bagheri    6 年前

    此文件(cygwin1.dll)是cygwin依赖项,类似于qt依赖项。必须将此文件和出现在此类消息错误中的类似文件从“cygwin/bin”复制到程序的文件夹中。此外,这对于在另一台没有cygwin的计算机中运行也是必需的!