如何安装从 GitHub 下载的 Windows 程序(用 C 编写)?

Jos*_*der 46 windows-7 c

我已经下载从GitHub死简单的Windows程序(这个如果是相关的)。我将它下载为 ZIP 文件,但我不知道如何安装它。我认为它是用 C 编写的。我需要编译器吗?(Visual Studio?)有什么我遗漏的简单东西吗?

Jou*_*eek 87

您环顾四周并在发布页面上找到安装程序。当然你可以编译源代码,但我认为这不是你想要的。

  • 同意。如果你不得不问,你不想从源代码编译。 (49认同)
  • @jpaugh - 我想说你通过下载可执行文件来安装恶意软件的机会要大得多 - 恶意软件很少是开源的。 (35认同)
  • 我倾向于同意@jpaugh。虽然从源代码构建很有可能并且有时是必要的,但这并不是您可以以通用方式询问“我如何构建 C 程序”的问题。只是差异太大了。一些幸运的程序就像“编译这些文件”一样简单。其他人需要makefile。有些需要先下载依赖项。设置构建的过程可能很复杂,并且不一定对程序员不友好。不过,最重要的是,您希望在项目中找到一个解释如何构建的文件,因为具体情况取决于项目。 (11认同)
  • 如果您不得不问,您可能*不应该*安装仅以源形式提供的软件...... (10认同)
  • 假设您实际上可以阅读该语言。我半常规地在 linux 上编译东西,我不能/不阅读任何源代码。即使我可以,我也不会审查 every.single.line。 (3认同)
  • 开源提供的安全性不一定是*您*会阅读源代码,而是*某人*肯定会阅读,并且如果存在*恶意软件,那么有人可能会公开它。这里的旁观者效应由于可以完全匿名公开这一事实而得到缓解。 (3认同)
  • @Kat 实际上,我的意思是它会增加您安装恶意软件的机会……假设您确实设法克服了上述所有问题。当然,实验*是*最好的学习方式……它只会让您的计算机在此过程中处于危险之中。 (2认同)

Faz*_*r87 66

.c 和 .h 文件是 C 源代码。

你需要安装一个 C 编译器,比如 Visual Studio、tcc 或类似的东西,加载项目然后编译它来运行它。

否则,该项目有一个发布页面(此处),可让您访问预编译版本,以节省您的时间和精力。

  • 如果他必须编译它,那么它通常会在自述文件中解释,你甚至没有提到他应该寻找。他应该去发布页面,这不仅仅是“失败(安装编译器),他应该去发布页面” (14认同)
  • mingw 也很受欢迎。 (3认同)

und*_*ndo 30

Github 主要供程序员用于项目协作。“下载 ZIP”选项会将源代码的副本下载到您的计算机。这通常1不包含已编译的可用可执行文件/二进制文件(即 exe 文件)的副本

Releases是 Github 的一项功能,用于向最终用户(通常对实际编码不感兴趣)发送软件。发行版附有发行说明和下载软件或源代码的链接。这是您应该检查二进制文件的第一个地方

在您的情况下,发布页面提供下载和设置文件。

但是,许多项目不会有任何版本(尤其是 Windows),在这种情况下,您可以执行以下操作之一:

  1. 在互联网上的其他地方搜索二进制文件。通常像DuckDuckGo(或谷歌,如果你喜欢)这样的搜索引擎会很容易找到你想要的东西。尝试搜索<application name> for Windows<application name> exe

  2. 自己编译吧。您至少需要具备一些编程语言的基本知识才能做到这一点。在这里,搜索引擎可以大量帮助。尝试搜索compile <application name> on WindowsMinGW compile <application name>

    在这里,我将介绍为 Widnows 编译实用程序的基础知识:

    • 下载MinGW。我个人喜欢这个包,因为它带有 boost(几个应用程序使用)和一个很酷的外壳。它还带有git,如果您想编译托管在 Github 或其他 Git 版本控制存储库上的文件而无需单独下载源代码,这将非常有用。

    • cmdor 中运行以下命令powershell

      • cd c:\sources\hello:将目录更改为源文件所在的位置。
      • g++ helloworld.cpp -o helloworld.exe: 这里helloworld.cpp是主源文件helloworld.exe的名称,是编译后的可执行文件的名称。
      • 如果您必须编译多个文件,请在-o切换前列出它们:g++ helloworld.cpp foo.cpp -o helloworld.exe
      • 这些是 C++ 的说明。如果您正在处理用 C 编程的应用程序,则文件扩展名将.c代替.cpp,您应该使用gcc命令代替g++. 其余部分或多或少相同
      • 请注意,您可能需要指定更多命令行参数才能编译正常工作的可执行文件。项目页面通常会有这些详细信息。
      • 您也可能肯定想查看 makefile。这篇Stack Overflow 帖子是关于一般的 makefile 的,这篇文章告诉我们如何将它们与 MinGW 一起使用。如果项目带有 makefile,请在手动编译源代码之前尝试它。
      • 您现在应该可以运行helloworld.exe.
    • 注意:大多数项目都带有 README 文件。顾名思义,这些文件包含有关编译和运行软件的重要信息,通过阅读它可以避免很多不必要的麻烦。

1注意:有时bin下载的文件中可能会有一个文件夹,其中应该包含可用的可执行文件/二进制文件

如果您想在 Windows 上使用 GNU/Linux 命令行实用程序,请参阅CygwinGOW。我制作了一些有用的可执行文件的最新版本,可供在此处下载。

进一步阅读:
http : //www.mingw.org/wiki/MinGW_for_First_Time_Users_HOWTO
https://gcc.gnu.org/onlinedocs/index.html#dir
/sf/ask/1601171911/ -run-configure-with-mingw

  • @JoshFriedlander 很高兴能为您提供帮助!稍后我会在答案中添加更多内容......是的,我正在与 JourneymanGeek (Aibobot) 聊天,他将等待几天的新答案浮出水面。 (2认同)
  • 在大多数情况下,这个过程真的那么简单吗?github 实用程序的哪一部分需要比您在此处描述的更多的知识来编译它们? (2认同)

Bob*_*Bob 18

此答案将解决构建纯源 Windows 应用程序(在 C 中)的一般问题。如果你像 OP 一样幸运,你也许可以找到预编译的二进制文件。

这里首先要注意的是,没有单一的方法可以从源代码构建应用程序。有不同的项目,大约有尽可能多的变化。也就是说,这里有一些一般步骤:

  1. 如果幸运的话,该项目通常会在README文件中提供构建说明。有时,也可能有一个INSTALL文件或其他可用的文档。如果这些可用,请按照说明进行操作。他们是你最好的选择。

    正如其他人所说,不幸的是,如果没有说明,很难重建所需的构建步骤。但是,我们至少可以在这里尽最大努力,这将适用于大多数简单的项目。

  2. 缺少说明,下一个调用端口是检查需要哪个构建工具。

    1. 如果您找到带有.sln.vcxproj扩展名的文件,这可能是一个 MSBuild/Visual Studio 项目。下载Visual Studio Community或 Express(用于 C++)的副本,在其中打开该项目文件,然后单击工具栏中的播放按钮(或使用构建菜单)。

    2. 如果您找到Makefile,这可能需要make. 但这就是事情变得更加困难的地方,因为有太多独立且不兼容的系统使用make.

      1. 因为它是针对 Windows 的,所以它可能会使用MinGW。下载它的副本,从开始菜单启动 MSYS,导航 ( cd) 到包含项目的目录,然后运行make.

      2. 在极少数情况下,它是 Cygwin(不幸的是,没有简单的方法可以判断,但如果 MinGW 构建错误并显示“posix”相关错误,这是一个不错的选择),您将不得不安装Cygwin。不幸的是,这不会构建本机 Windows 二进制文件——您每次都必须通过 Cygwin 启动该程序。

    3. “构建工具”可以是名称build.bat或类似名称的自定义脚本。在这种情况下,你要么打开它看看里面有什么,要么试着运行它看看有什么错误。如果您打开它并看到提及GCC,请返回到 2.2.1。MinGW 步骤但运行自定义脚本而不是make.

  3. 可能根本没有构建工具。如果您遇到的只是单个文件.c.cpp文件,那么它可能很简单,您可以进行直接编译。这些几乎总是MinGW,所以下载它,启动 MSYS shell,导航到目录,然后调用gcc或者g++根据需要调用——例如gcc -o program.exe program.c

  4. 有可能这些都不起作用。如果您在任何步骤收到错误消息,它们可能包含缺少什么的线索。一种可能性是您缺少某些必需的框架或库——如果您愿意,您可以尝试下载它们并将它们添加到您的构建环境中,但这通常不是一个微不足道的过程,并且有很多变化,没有在答案中涵盖它们的方法。


词汇表

构建工具

一个构建工具允许你建立与极少数的命令的项目。对于大多数具有多个源文件的项目,将在某处涉及构建工具。有多种构建工具,但最常见的是:

  • make,在 Linux 上随处可见,在 Windows 上越来越普遍。使用的项目make通常可以通过Makefile.

  • MSBuild是特定于 Windows 的,通常与 Visual Studio 结合使用。这些通常伴随着一个*.sln*.vcxproj文件。

工具链

一个工具链是编译器和支持工具。就像构建工具一样,有几种,它们通常与构建工具之一一起使用。

  • MSVC是微软的工具链。这是 Windows 原生开发最常用的工具链。这通常与 MSBuild 系统一起使用,并且构建通常是通过 Visual Studio 创建的。但是,现代 MSVC 项目也可以使用Makefile

  • GCC ( MinGW ) 是 GCC for Windows 的一个端口。通常与make. 如果该项目本机针对 Windows 并具有 . Makefile,则可能适用于 MinGW-GCC。

  • GCC ( Cygwin ) 创建了一个兼容 POSIX 的环境。这允许您直接编译大多数为 Linux 或 Unix 编写的程序,并使其直接在 Windows 下运行。最近在 Windows 10 中,Windows上的 Ubuntu 上的 Bash是一种替代方法。GCC 通常与make.

框架和库

是由其他人编写的可重复使用的代码集,许多程序都依赖它来避免重新发明轮子。您需要有这些依赖项才能构建项目。如果幸运的话,它们将包含在您的初始下载中,但情况并非总是如此。

框架实际上是库的集合。许多项目使用一个框架,您也需要它。这些通常也带有自己的构建系统,但将它们全部列出是不可能的。

最难的部分是处理额外的框架和库依赖项。例如,如果该项目使用Qt —— 那么您将需要整个混乱才能正确构建它。这是一项艰巨的任务,除非您有先前的经验,否则最好在这里向其他人寻求直接帮助。