【问题标题】:How to build executable from c written source files?如何从 c 编写的源文件构建可执行文件?
【发布时间】:2010-11-27 14:39:45
【问题描述】:

src 目录下很少有扩展名为 .c anf .h 的文件(cmdline.c cmdline.h core.c core.h 等),还有一个没有扩展名的“MakeFile”文件。是否有可能将这些源文件构建到 Windows 7(64 位)上的某个可执行文件中?我想我需要为 C 或一些 sdks 下载编译器,对吗?

【问题讨论】:

  • 这段代码是为 Windows 开发的吗? “make”实用程序通常是 Unix 的东西。
  • Windows 有来自 MS 的 nmake; “make”的概念太有用了,甚至 Windows 都无法完全忽略。
  • makegcc 存在于许多操作系统中,包括 Windows。

标签: c windows compiler-construction makefile


【解决方案1】:

是的。

你需要:

  • 下载并安装 C/C++ 编译器(我推荐TDragon's distribution of MinGW),
  • 将编译器添加到您的 PATH(大多数情况下安装程序可以为您完成);通过打开 cmd.exe 并输入 gcc -vmingw32-make -v 来验证它是否已完成,如果您的路径设置正确,两者都应该为您提供半屏版本信息,
  • 通过cmd.exe,导航到Makefile所在的文件夹并调用mingw32-make

从现在开始,一切都应该自动编译。如果没有,请发布错误。


更新:

首先,获取MSys 包对您很有用。安装它,您将拥有更新版本的make(从现在开始使用它而不是mingw32-make)。

关于CreateProcess的bug,与系统PATH变量过长有关。你需要做这样的事情:

  • 打开cmd
  • 执行set PATH=c:/mingw32/bin;c:/msys/1.0/bin(在此处更改路径以反映您自己的安装,如果不同)
  • 然后像以前一样:导航到您的项目目录,运行make。如果您没有丢失任何外部库,现在一切都应该很顺利。

顺便说一句-记住不要在有空格的目录中安装 MinGW 或 MSys。

【讨论】:

  • 我也喜欢 this MinGW distribution,其中包括 Boost。
  • 那个发行版也很有前途,但我更喜欢 TDragon 的,因为它支持 OpenMP 和 GDB。但我确实希望这两位作者能够合力。 :)
  • 感谢您的快速响应,按照上面提到的方法完成了所有操作,但出现错误:C:\src>mingw32-make rm -f *~ process_begin: CreateProcess(NULL, rm -f *~, .. 。) 失败的。 make (e=2): 系统找不到指定的文件。 mingw32-make: *** [clean] 错误2是否意味着源文件中有一些错误的包含或smth?
  • 请编辑您的帖子并在下次添加详细信息,cmets 中没有代码格式。对于您的问题,请参阅我修改后的答案。
【解决方案2】:

我不是 Windows 开发人员.. 但仍然据我所知。 Visual Studio(即 2008,我猜)能够读取 Makefile。 请看一下..如果需要,请将此 makefile 更改为他们的格式..

有许多独立于平台的开源产品..它们可以在两个操作系统上使用他们提供的 Makefile 进行编译。

否则使用 'cygwin'

开发人员 C++ 在 Windows 中工作,但它实际上是购买到 Windows 中的 GCC 代码,有没有人熟悉他们用来将 linux (.sh) 转换为可执行文件的过程??

【讨论】:

    【解决方案3】:

    我想我需要为 C 或一些 sdks 下载编译器,对吗?

    当然是编译器,但您可能需要哪些额外的库完全取决于代码本身。成功的构建还可能取决于原始代码和 makefile 的预期目标。 makefile 可能是 GNU makefile,但还有其他类似但不兼容的 make 实用程序,例如 Borland Make 和 MS NMake。如果它是一个简单的构建,您可以完全避免 makefile 问题,并使用 Visual C++ 2010 Express 等 IDE 提供的项目管理。

    如果您不知道这段代码是什么、它做了什么以及需要构建什么,那么您就是在冒险构建它。也许您应该发布一个指向原始源的链接,以便您可以获得有关如何构建它的更具体的建议。


    [编辑]

    好的,现在看看你正在尝试构建的代码,这是一个非常简单的构建,所以如果你想避免使用 GNU make,那么你可以将 src 文件夹中的所有 *.c 文件添加到在您的 IDE 中进行项目并构建它。

    但是有一个严重的问题,它使用 BSD 套接字 API 和 Linux 系统头文件。您需要首先将代码移植到 Windows API,例如 WinSock(非常类似于 BSD 套接字),或者在 Cygwin 下构建它(有点像大锤)。可能还有其他的Linux依赖需要排序,我没有仔细看,但是看起来还算简单。也就是说,如果你没有关于编译这些东西的第一条线索,那么也许这不是你可以做的任务?

    当然,编译代码可能只是问题的一半,如果它被设计为在 Linux 上运行,则可能存在运行时依赖项,阻止它在 Windows 上运行。再次,我没有仔细看。

    另外查看代码,我建议谨慎,这可能不是质量最好的代码。这可能是不公平的,但一个明显的缺陷和一个迹象表明缺乏经验是标题中缺少包含保护。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-23
    • 1970-01-01
    • 2014-04-21
    相关资源
    最近更新 更多