热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

如何在Windowsx64上使用openSSL和nghttp2编译cURL?

如何解决《如何在Windowsx64上使用openSSL和nghttp2编译cURL?》经验,为你挑选了1个好方法。

这是有史以来的第一个问题,所以请允许我:)我过去三天一直在网上,试图找到一种在Windows机器上获得以下结果的方法。

我需要的'cURL -V'输出示例

我已经发现了很多用于macOS和Unix的东西,但是对于Windows却只有一点点。我正在运行xampp,最终我试图使它通过cURL / PHP发送http / 2请求。到目前为止,我所收集的是我需要使用某些库来编译cURL,例如openssl(至少1.0.2),启用了http / 2的libcurl和nghttp2。我觉得我已经很接近了,但是我只是缺少一些步骤。

到目前为止,我所做的是:

为Visual Studio 2017安装了诸如mingw32,cmake和构建工具之类的东西

下载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上的第一个)

下载的libssh2-1.8.0

下载的openssl-1.0.2l

下载了zlib-1.2.11

在https://curl.haxx.se/docs/install.html上按照Mingw32的说明进行操作(但它始终提示我“无法找到openSSL软件包”)

我读到某个地方需要用'--with-nghttp2 --prefix- [此处的NGHTTP2文件夹位置]'标志来编译cURL,所以我尝试了一些我认为可行的方法,但是我认为它没有用: 'cmake --with-nghttp2 --prefix- [此处的NGHTTP2文件夹位置]。”,然后“ cmake install”。”,看起来好像做了些什么,但是在curl-7.56.1 / src /中内置的cURL.exe除了libcurl之外没有其他任何东西。

任何建议或指针将不胜感激!感谢大伙们 :)



1> Raimondo Pre..:

好的,我终于能够在具有http / 2支持的Windows上构建Curl。这是一步一步为我工作的方法:

下载了“ Visual Studio 2017的构建工具 ”,以便能够从命令行进行构建(提供nmake和必需的Windows SDK库和标头过滤器)

如上所述下载了curl的最新版本(curl-7.56.1.tar.gz,对我来说也是https://curl.haxx.se/download.html上的第一个)

提取到里面c:/curl,所以我最终得到了c:/curl/curl-7.56.1

读指令BUILD.WINDOWS.txtc:/curl/curl-7.56.1/winbuild,并着手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/depsbinlib,和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

当我第一次尝试运行卷曲,这表明一个错误,说失踪的libssl-1_1.dlllibcrypto-1_1.dll,所以我不得不将它们从复制c:\curl\curl-7.56.1\deps\bin到同一目录下新建curl.exe

注意:由于zlib并未随附bin包含任何的文件夹.dll,因此我理解了为什么必须使用标志将zlib标记为静态WITH_ZLIB=static。我不明白的是为什么我不得不在新目录中手动移动openssl .dll。有什么想法吗?

PS:谢谢丹尼尔为我指出正确的方向。我什至没有注意到/winbuild目录。

PPS:您可能会说,我不知道我90%的时间在做什么。大概是为什么我花了5天的时间才弄清楚;)


推荐阅读
  • EasyMock实战指南
    本文介绍了如何使用EasyMock进行单元测试,特别是当测试对象的合作者依赖于外部资源或尚未实现时。通过具体的示例,展示了EasyMock在模拟对象行为方面的强大功能。 ... [详细]
  • Java EE CDI:解决依赖关系冲突的实例
    在本教程中,我们将探讨如何在Java EE的CDI(上下文和依赖注入)框架中有效解决依赖关系的冲突问题。通过学习如何使用限定符,您将能够为应用程序的不同客户端提供多种接口实现,并确保每个客户端都能正确调用其所需的实现。 ... [详细]
  • 本文探讨了在C语言编程中,如何有效避免多文件项目中的重定义问题,通过合理使用预处理器指令和extern关键字,确保代码的健壮性和可维护性。 ... [详细]
  • 本文详细介绍了如何在现有的Android Studio项目中集成JNI(Java Native Interface),包括下载必要的NDK和构建工具,配置CMakeLists.txt文件,以及编写和调用JNI函数的具体步骤。 ... [详细]
  • iTOP4412开发板QtE5.7源码编译指南
    本文详细介绍了如何在iTOP4412开发板上编译QtE5.7源码,包括所需文件的位置、编译器设置、触摸库编译以及QtE5.7的完整编译流程。 ... [详细]
  • PHP 5.4.8 编译安装指南
    本文详细介绍了如何在Linux环境下编译安装PHP 5.4.8,并配置为FastCGI模式运行。包括所需依赖包的安装、源代码下载、编译配置及启动服务等步骤。 ... [详细]
  • 本文详细介绍了如何正确安装Java EE SDK,并解决在安装过程中可能遇到的问题,特别是关于servlet代码在Apache Tomcat 10中无法运行的情况。 ... [详细]
  • 在Linux系统上构建Web服务器的详细步骤
    本文详细介绍了如何在Linux系统上搭建Web服务器的过程,包括安装Apache、PHP和MySQL等关键组件,以及遇到的一些常见问题及其解决方案。 ... [详细]
  • 本文探讨了浏览器的同源策略限制及其对 AJAX 请求的影响,并详细介绍了如何在 Spring Boot 应用中优雅地处理跨域请求,特别是当请求包含自定义 Headers 时的解决方案。 ... [详细]
  • Java实现文本到图片转换,支持自动换行、字体自定义及图像优化
    本文详细介绍了如何使用Java实现将文本转换为图片的功能,包括自动换行、自定义字体加载、抗锯齿优化以及图片压缩等技术细节。 ... [详细]
  • Microsoft即将发布WPF/E的CTP(Community Technology Preview)和SDK,标志着RIA(Rich Internet Application)技术的新里程碑。更多详情及下载链接请参见MSDN官方页面。 ... [详细]
  • Eclipse 下 JavaFX 程序开发指南
    本文介绍了 JavaFX,这是一个用于创建富客户端应用程序的 Java 图形和媒体工具包,并详细说明了如何在 Eclipse 环境中配置和开发 JavaFX 应用。 ... [详细]
  • 本文将探讨从ASP.NET 1.1到2.0期间编译系统的重要变革。通过对比两个版本的即时编译模型,我们将揭示2.0版本中引入的新特性和改进之处。 ... [详细]
  • Vue 项目构建与部署指南
    本文将指导您完成Vue项目的构建和部署过程,包括环境搭建、项目初始化及配置、以及最终的部署步骤。 ... [详细]
  • 开发笔记:Mongodb副本集集群搭建 ... [详细]
author-avatar
cr罗详青
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有