您的位置:首页 > 理论基础 > 计算机网络

windows平台下编译curl支持https

2014-06-10 15:10 405 查看
参看http://curl.haxx.se/download.html,curl有多个版本,会有是否包含ssl之分。如果需要使之支持https,就需要使用带ssl的版本。

在Windows的平台下会有多个选择,想省事的话就直接下载win32-msvc带ssl版的,加压后里面会有一些curl依赖的dll,比如libeay32.dll ssleay32.dll openldap.dll等,这就是需要的ssl,直接用这里面的curllib.dll就可以支持https了。

当然,基于其他一些原因(比如不放心别人编好的版),也可以自己用源码编。

编译步骤如下:

1.下载http://curl.haxx.se/download/curl-7.25.0.zip,并解压到某处,我解压到F:\selfcurl\,则路径就是F:\selfcurl\curl-7.25.0

2.因为需要openssl和zlib,则分别在http://www.openssl.org/source/下载openssl(我下的是openssl-0.9.8r),解压到f:\,则路径是F:\openssl-0.9.8r;到http://zlib.net/zlib126.zip下载zlib,解压到某处,我的是F:\newzlib,则路径就是F:\newzlib\zlib-1.2.6。

3.开始编之前,需要准备几个工具,打开vs的命令提示行,分别cl回车,输入nmake -v 回车,如果有任意一个说不是内部或外部命令之类的,就需要配一些环境,否则可跳过这部分继续看4。

3.1添加环境变量:在环境变量的系统变量中添加INCLUDE项,值是D:\Program Files\Microsoft Visual Studio 8\VC\include;D:\Program Files\Microsoft SDKs\Windows\v7.1\Include。再添加LIB项,值是D:\Program Files\Microsoft Visual Studio 8\VC\lib;D:\Program Files\Microsoft SDKs\Windows\v7.1\Lib。再在path项中添加D:\Program
Files\Microsoft Visual Studio 8\Common7\Tools;D:\Program Files\Microsoft Visual Studio 8\Common7\IDE;D:\Program Files\Microsoft Visual Studio 8\VC\bin;

3.2到D:\Program Files\Microsoft Visual Studio 8\Common7\Tools执行一下vsvars32.bat

3.3再次尝试cl回车和nmake -v回车,如果还不行,就注销一下系统,然后就可以了

4.编译zlib

可以首先查看一下F:\newzlib\zlib-1.2.6\win32目录下makefile.msc文件,有一项SHAREDLIB = zlib1.dll,这个名字很蛋疼,说明编出来的dll叫zlib1.dll,为毛要加个1啊!看着不爽的可以把它改成zlib.dll,保存退出。然后打开vs命令行工具,进入zlib的目录,我这里就是F:\newzlib\zlib-1.2.6,执行nmake -f win32/makefile.msc,执行完后目录下就有了zlib.lib和zlib.dll
5.编译openssl
这是最蛋疼的一块,网上有很多说明,按照他们的说明,我没有一次成功的。其中无数次尝试遇到的问题这里说一下:
5.1安装配置ActivePerl,安装后在CMD中试一下perl -v命令,如果说不是内部外部命令这些,配置一下环境变量,比如安装到d:\perl,则把d:\perl\bin添加到环境变量中的系统变量中的path中,然后注销一下系统,应该就可以了
5.2打开vs命令提示行,进到openssl解压后的目录,F:\openssl-0.9.8r。执行perl configure vc-win32,他执行一段后,如果没错误,再执行ms\do_ms,然后他执行一段,如果没错,再执行nmake -f ms\ntdll.mak,执行后开始编,不过我这编的时候会出错,网上说的一些解决方案也都对应不上。只能放弃

6.编curl,因为curl必须要使用zlib和openssl,但是缺少openssl的dll和lib,恰巧我原来的代码里有openssl的dll和lib,就决定替代一把试试,于是把libeay32.dll libeay32.lib ssleay32.dll ssleay32.lib放到F:\openssl-0.9.8r\out32dll中。在F:\selfcurl\curl-7.25.0\lib中建一个builddebug.bat,内容如下:
call "D:\Program Files\Microsoft Visual Studio 8\VC\bin\vcvars32.bat"

set CFG=debug-dll-ssl-dll-zlib-dll

set OPENSSL_PATH=F:\openssl-0.9.8r

set ZLIB_PATH=F:\newzlib\zlib-1.2.6

nmake -f Makefile.vc8

上面分别设置OPENSSL的路径,ZLIB的路径,和编译器号,我的是vs2005
然后运行这个bat就可以编出libcurld.dll和libcurld_imp.lib
同理改成set CFG=release-dll-ssl-dll-zlib-dll就可以编出release版

openssl的几个dll和lib在下面可以下载到
http://download.csdn.net/detail/zp373860147/4261965

另外几点,如果一些版本编不过,可以尝试一下较早的版本。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: