这是这里的第一个问题,所以请耐心等待:)过去三天我一直在网上尝试找到一种方法在我的 Windows 机器上获得以下结果。
我需要的“cURL -V”输出示例 https://i.stack.imgur.com/yjAiZ.png
我找到了很多适用于 macOS 和 unix 的东西,但只找到了一些适用于 Windows 的东西。我正在运行 xampp,最终我试图让它通过 cURL/PHP 发送 http/2 请求。到目前为止,我收集到的信息是,我需要使用一些库来编译 cURL,例如 openssl(至少 1.0.2)、启用了 http/2 的 libcurl 和 nghttp2。我觉得我已经很接近了,但我只是错过了一些步骤。
到目前为止我所做的:
- 安装了 mingw32、cmake 和 Visual Studio 2017 的构建工具等内容
- 下载 nghttp2-1.27.0,并使用“cmake”和“cmake --build”获取 5 个文件:nghttp2.dll、.exp、.lik、.lib 和 .pdb
- 下载了curl-7.56.1.tar.gz(第一个)https://curl.haxx.se/download.html https://curl.haxx.se/download.html)
- 下载libssh2-1.8.0
- 下载openssl-1.0.2l
- 下载zlib-1.2.11
- 遵循 Mingw32 的说明https://curl.haxx.se/docs/install.html https://curl.haxx.se/docs/install.html(但它一直给我错误“找不到 openSSL 包”)
- 我在某处读到我需要使用“--with-nghttp2 --prefix-[NGHTTP2 文件夹的位置]”标志来编译 cURL,所以我尝试了一些我认为可行的方法,但我认为它不起作用: 'cmake --with-nghttp2 --prefix-[此处 NGHTTP2 文件夹的位置] 。 ',然后'cmake install 。 '看起来它做了一些事情,但是在curl-7.56.1/src/中构建的cURL.exe除了libcurl之外没有其他任何东西。
任何建议或指示将不胜感激!感谢你们 :)
好吧,我终于能够在 Windows 上构建带有 http/2 支持的 Curl 了。
这一步一步对我有用:
- 已下载”Visual Studio 2017 构建工具 https://visualstudio.microsoft.com/downloads/#build-tools-for-visual-studio-2017“能够从命令行构建(提供
nmake
以及所需的 Windows SDK 库和头文件)
- 下载最新版本的curl,如上所述(
curl-7.56.1.tar.gz
,对我来说也是第一个https://curl.haxx.se/download.html https://curl.haxx.se/download.html)
- 将其提取到里面
c:/curl
,所以我最终得到c:/curl/curl-7.56.1
- 阅读说明构建.WINDOWS.txt inside
c:/curl/curl-7.56.1/winbuild
并继续http://windows.php.net/downloads/php-sdk/deps/ http://windows.php.net/downloads/php-sdk/deps/下载我需要的 4 个库。我刚刚获取了 VC15/x86 版本。
- 在里面创建一个名为“deps”的新文件夹
c:/curl/curl-7.56.1
- 里面创建了以下3个文件夹
c:/curl/curl-7.56.1/deps
: bin
, lib
, and include
- 将我刚下载的每个库解压到相应的3个文件夹中
- 打开 VS 2017 的开发人员命令提示符
cd c:/curl/curl-7.56.1/winbuild
nmake -f Makefile.vc mode=dll WITH_DEVEL=c:/curl/curl-7.56.1/deps WITH_SSL=dll WITH_NGHTTP2=dll WITH_ZLIB=static WITH_SSH2=dll
- 这会在以下子文件夹之一内构建一个 CURL 可执行文件
c:\curl\curl-7.56.1\builds
- 当我第一次尝试运行 CURL 时,它显示一个错误,提示缺少libssl-1_1.dll and libcrypto-1_1.dll,所以我不得不从
c:\curl\curl-7.56.1\deps\bin
到新建的同一目录curl.exe is
- 注意:由于 zlib 没有附带
bin
包含任何的文件夹.dll
的,我明白为什么我必须使用以下命令将 zlib 标记为静态WITH_ZLIB=static
旗帜。我不明白的是为什么我必须这样做manually移动 openssl.dll
位于新目录中。有什么想法吗?
PS:谢谢丹尼尔为我指明了正确的方向。我什至没有注意到/winbuild
目录。
PPS:正如你可能知道的那样,90% 的时间我都不知道自己在做什么。可能是我花了 5 天才弄清楚的原因;)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)