windows平台libcurl+openssl编译备忘

一、环境准备

  • Visual Studio 2015(其他版本也可以)
  • Git
  • Perl
  • CMake

二、开始编译

2.1 获取curl源码:

git clone --branch curl-7_60_0 https://github.com/curl/curl.git

2.2 获取openssl源码:

Git获取指定版本的源码,因为7_60_0版本libcurl自带的build-openssl.bat最高支持openssl 1.0.2版本,所以此处获取的OpenSSL_1_0_2o分支的代码:

git clone --branch OpenSSL_1_0_2o https://github.com/openssl/openssl.git

2.3 编译openssl

cd curl/porjects进入curl/porjects目录,执行如下命令开始编译openssl:

./build-openssl.bat vc14 x86 debug D:\\SourceCode\\openssl -perlpath C:\\Strawberry

# 命令中的C:\\Strawberry是Perl的安装目录

编译完的输出文件位于的openssl/build目录。

[可选] 修改openssl的运行时库

通过上面命令编译的openssl默认使用的是/MT(debug版为/MTd)的运行时库。如果需要更改为/MD(或/MDd),可以通过如下方式更改:

  1. 修改opessl源码目录中的ms\nt.mak文件(注:该文件由Perl脚本自动生成),将CFLAG选项中的 /MT修改为/MD
  2. 因为nt.mak文件是由Configure命令生成的,所以我们需要屏蔽Configure步骤,否则会将我们上面的修改覆盖掉。具体方法为:注释掉build-openssl.bat文件中对应得编译版本下的perl Configure debug-VC-WIN32 no-asm --prefix=%CD%

也可以到https://slproweb.com/products/Win32OpenSSL.html下载编译好的二进制文件。

2.4 编译curl

配置文件修改

编译curl之前,需要对curl\winbuild\MakefileBuild.vc文件进行部分修改:
DEVEL_LIB = $(WITH_DEVEL)/lib行修改为:

!IF "$(DEBUG)"=="yes"
DEVEL_LIB    = $(WITH_DEVEL)/lib/Debug
!ELSE
DEVEL_LIB    = $(WITH_DEVEL)/lib/Release
!ENDIF

这样修改主要是为了在编译debug和release版本时,指定依赖库的debug/release版。

这一步是可选的。如果不修改,在编译debug和release版本时,分别拷贝不同版本的依赖库到lib目录即可。

拷贝依赖文件到deps

curl目录新建deps目录(因为编译时指定了WITH_DEVEL=../deps),并且在deps目录中新建includelib/Debuglib/Release目录,目录建完之后的结构如下:
这里写图片描述

拷贝openssl文件到deps中:

  1. 在deps\include中新建openssl目录,然后将openssl\inc32中的openssl目录(含该目录)拷贝到include\openssl中,即inlcude\openssl\openssl。
  2. openssl\build\Win32\VC14\LIB Debug中的*.lib文件拷贝到lib/Debug目录。

其他依赖库也可以使用此方法。

打开Visual Studio的命令行工具,进入到\curl\winbuild目录,执行如下命令开始编译curl:

nmake /f Makefile.vc mode=static VC=15 MACHINE=x86 WITH_SSL=static DEBUG=yes WITH_DEVEL=../deps

编译完的输出文件位于curl\builds目录。

[可选] 修改libcurl的运行时库

MakefileBuild.vc文件中针对static默认使用的是MT:

!IF "$(RTLIBCFG)"=="static"
RTLIB = /MT
RTLIB_DEBUG = /MTd
!ELSE
RTLIB = /MD
RTLIB_DEBUG  = /MDd
!ENDIF

所以只需要在编译参数中加入RTLIBCFG=static即可。

参考curl\winbuild\BUILD.WINDOWS.txt

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

china_jeffery

你的鼓励是我前进的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值