【问题标题】:How to build git on windows?如何在 Windows 上构建 git?
【发布时间】:2015-05-05 02:40:45
【问题描述】:

我正在尝试从这个存储库构建 Git:git-for-windows,这应该是带有特定于 Windows 的更改的最后一个 git 版本。我在 Windows 上的 MinGw32 环境中工作。

我遇到了以下问题:当我尝试构建 git 时,我得到:

compat/mingw.h:134:25: fatal error: openssl/ssl.h: 
No such file or directory  #include <openssl/ssl.h>

这是为什么呢?我已经使用 make -> make install 序列在同一环境中从源代码构建了一个安装的 openssl。
特别是,ssl.h 被安装到了/usr/local/ssl/include/openssl/ssl.h 和/local/ssl/include/openssl/ssl.h。

我该如何解决这个问题?

【问题讨论】:

    标签: c++ windows git ssl mingw


    【解决方案1】:

    截至项目网站https://gitforwindows.org/#contribute,当前的答案是从该页面下载“Git for Windows SDK”。

    当您执行安装程序时,它会克隆 SDK,并打开“Git for Windows SDK”提示 - 据我所知,它非常接近 MINGW64 提示。

    然后:

    sdk cd git
    sdk build
    

    你已经设置好了,你有一个本地构建的 git.exe! SDK默认安装到C:\git-sdk-64,git项目在C:\git-sdk-64\usr\src\git创建。

    【讨论】:

      【解决方案2】:

      现在,它最适合 Cygwin。您需要安装它需要的所有软件包,否则构建将失败。

      【讨论】:

        【解决方案3】:

        使用 MinGW-w64 安装 MSYS2。

        打开 Mingw64 shell,添加以下包:

        $ pacman -Sy mingw64/mingw-w64-x86_64-openssl \
          mingw64/mingw-w64-x86_64-pcre2 \
          mingw64/mingw-w64-x86_64-zlib
        

        克隆并构建 Git(如果您还没有 Git,可以下载 .zip 代替)

        $ git clone https://github.com/git-for-windows/git.git
        $ cd git
        $ make
        

        【讨论】:

        • 这对我不起作用(即使在添加这些包和其他包之后也会出现多个错误),但另一方面 Git for Windows 项目现在提供 它自己的(MinGW- w64-based) SDK 安装程序,完美运行,不会影响您现有的 msys2/mingw-w64 安装。
        【解决方案4】:

        自 2015 年以来,您可以通过新的 ci(持续集成)文件夹及其 ci/run-windows-build.sh 脚本(2017 年 3 月)找到更完整的 Windows 构建示例。

        它用于.travis.yml,这意味着您可以将实际构建委托给远程构建环境:travis-ci.org/git/git/builds。
        这样,您就不必担心自己的本地工作站有或缺少依赖项。

        【讨论】:

        • shell脚本只是做curl https://git-for-windows-ci.azurewebsites.net/api/TestNow
        • @rustyx 是的。使用,作为传递给 URL 的参数:?action=trigger&amp;branch=$BRANCH&amp;commit=$COMMIT&amp;skipTests=false: 这就是触发 build 的原因。 github.com/git/git/blob/…
        • OP 询问如何在本地执行此操作,而不是在 azure CI 上。
        • @rustyx 我同意。这就是为什么我提出这个答案作为一个替代,并以“这样,你不必担心你自己的本地工作站有或缺少依赖项。”结束。希望这可能会激发其他读者考虑这种可能性。
        【解决方案5】:

        先尝试安装openssl,然后再尝试构建它。还请关注this 以了解您的问题(尽管它是 linux 指定的)。

        【讨论】:

        • 我已经安装了 openssl。它位于 /local/ssl。
        • 你是否安装了openssl的开发包(libssl-dev)?
        • 我是从源码安装的
        • 尝试通过stackoverflow.com/questions/3368683/…。这可能会有所帮助
        • 最后我可以通过使用 `NO_OPENSSL=1' 调用 make 来构建。这是您提出的 cmets 中的一种方法。
        猜你喜欢
        • 1970-01-01
        • 2011-08-22
        • 2017-07-22
        • 2014-11-23
        • 2012-09-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多