ActivePerl+zlib+OpenSSL+libssh2+curl编译(windows)

本文详细介绍了在Windows 7 32位系统上编译CURL库以支持HTTPS的过程,包括安装配置ActivePerl、Zlib、OpenSSL、libssh2以及curl等步骤,确保能在VS2008环境中成功编译。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

WINDOWS平台上使用CURL库发送网络消息,必须支持https,那么CURL库也就必须带OPENSSL,我电脑是WIN7系统32位,故以下的各种编译均是在该环境下实测通过

如果需要支持汇编,还需要提前安装nasm,下载地址为:http://www.nasm.us/pub/nasm/releasebuilds/?C=M;O=D

 

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

   1.添加环境变量:

       1.1在环境变量的系统变量中添加INCLUDE项,值是

            D:\Program Files\Microsoft Visual Studio 8\VC\include;D:\Program Files\Microsoft SDKs\Windows\v7.1\Include

       1.2添加LIB项,值是

           D:\Program Files\Microsoft Visual Studio 8\VC\lib;D:\Program Files\Microsoft SDKs\Windows\v7.1\Lib

       1.3在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;

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

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

 

上面的环境正常以后就可以开始了

第一步:下载安装配置ActivePerl

              下载地址:http://www.activestate.com/activeperl/downloads

               在cmd中输入perl -v可以查看perl的版本号,如果出现perl不是内部命令错误,这将perl的路径d:\perl\bin添加到环境变量中的系统变量中的path中,在试一下perl -v命令,如果还是不行,计算机重启一下就可以了

 

第二步:下载安装Zlib,我下载的版本为zlib 1.2.11

               下载地址:http://zlib.net/

                网站上既有源码也有已经编译好的lib,我这里自己重新编译一遍,有两种编译方式:

               编译方式一:用makefile(zlib1211\win32)编译,makefile需要启动VS2008命令提示来进行编译

                                    第一步:启动VS2008命令提示

                                    第二步:分别输入以下两个指令

                                                 cd /d F:\curlpack\zlib-1.2.11

                                                 nmake -f win32/Makefile.msc

 

                                                         编译完成后,我们在zlib文件下查看,会看到以下两个编译完成的文件

              编译方式二:用VS编译,我用VS2008

                                   第一步:cmd 命令进入 zlib-1.2.11\contrib\masmx86

                                                 如果是64位机器,则进入 zlib-1.2.11\contrib\masmx64

                                   第二步:运行 bld_ml32.bat,会生成inffas32.asm,match686.asm这两个文件,这两个文件在后面的VS编译中需要用到

                                                  当然,在这步之后,在VS2008命令提示中进入zlib的文件夹然后输入下面的命令也是可以编译成功的

                                                  nmake -f win32/Makefile.msc LOC="-DASMV -DASMINF" OBJA="match686.obj inffas32.obj"

                                   第三步:打开VS2008,打开zlib-1.2.11\contrib\vstudio\vc9\zlibvc.sln ,选择WIN32平台,编译整个解决方案或者zlibvc这个项目即可得到

  

第三步:下载编译OPENSSL,我下载的版本为 openssl-1.0.2k.tar.gz

              下载地址:http://www.openssl.org/source/

               http://slproweb.com/products/Win32OpenSSL.html   这里可以直接下载OPENSSL的安装包,不需要我们自己去编译,方便好用

               OPENSSL是需要自己编译的,有两种编译方式,分别是makefike和VS编译

               编译方式一:命令行方式,打开VS2008命令提示

                                 第一步:解压压缩包后,请打开openssl-1.0.2k文件夹下的 INSTALL.W32 ,这里有详细的编译说明,对应的平台打开对应的INSTALL文件即可

                                               新建一个存放OPENSSL编译结果的文件夹,我的是:F:\curlpack\openssl

                                 第二步:VS2008命令行中进入解压后的文件夹中

                                               cd F:\curlpack\openssl-1.0.2k

                                第三步:继续输入命令

                                              perl Configure VC-WIN32 no-asm --prefix=F:\curlpack\openssl

                                              ms\do_ms

                                              nmake -f ms\ntdll.mak

                                

                                 第四步:编译完成之后,用这个命令测试编译是否成功

                                               nmake -f ms\ntdll.mak test

                                 第五步:安装

                                               nmake -f ms\ntdll.mak install

第四步:下载libssh2,我下载的版本是libssh2-1.7.0.tar.gz

               下载地址:https://www.libssh2.org/download/

                因为我选择的curl是带SSL 和 SSH的,所以有了这一步,如果只选择该版本SSL的,那这一步就要替换成ngttp2 的下载了

                网上提供了源码和目标DLL安装包,一般直接下载DLL安装比较快捷,我选择的是自己编译

                第一步:打开libssh2-1.7.0\win32 文件夹下的config.mk 修改里面的OPENSSL和ZLIB的路径为上面编译好的路径,这里也可以把zlib相关选项关闭掉

                第二步:也是有两种编译方式,makefile和VS编译

                             编译方式一:用makefike编译,打开VS2008命令提示工具,进入根目录

                                                   cd F:\curlpack\libssh2-1.7.0

                                                    nmake /f NMakefile

                             编译方式二:

                              用VS2008打开 F:\curlpack\libssh2-1.7.0\win32\libssh2.dsw 工程,提示转换,选择全部转换

                              如果直接编译libssh2工程,会报错:fatal error C1083: 无法打开包括文件:“openssl/opensslconf.h”: No such file or directory

                              因为我编译好的openssl并不在libssh2的文件夹下,所以需要添加路径

                              libssh2依赖openssl 和 zlib ,现在把需要包含的文件路径添加进项目:  工具--》选项--》项目和解决方案--》VC++目录

                              当然这个路径的添加也可以在  项目属性页中添加

                              添加包含文件路径

                              添加库文件路径

                             我看网上还有大神在这里有一步:项目属性页--》C++--》代码生成--》运行库--》多线程(/MT)      

                             我没有这步也是可以编译成功的,也就是用的默认的,不知道这一步有什么作用,有待查证,所以这里记一笔                    

                             然后再编译libssh2工程即可成功!

第五步:下载curl,我下载的版本是 curl-7.53.1_SSL_SSH.zip

                下载地址:https://curl.haxx.se/download.html

                 可以看到有很多版本可以选择

                  我选择curl-7.53.1_SSL_SSH.zip 只是因为第一个只带SSL的需要ngttp2,而这个库我是怎么都下载不下来,所以放弃了,如下所示

                   好了,下载完成之后,解压F:\curlpack\curl-7.53.1

                   同样,也有两种编译方式,一种makefile,一种是VS编译

                    编译方式一:makefile编译,需要使用VS2008的命令提示

                                        第一步:打开VS2008命令提示,进入解压后的根目录

                                                       cd F:\curlpack\curl-7.53.1\winbuild

                                        第二步:编译命令可参考该目录下的 BUILD.WINDOWS.txt

                                                     

                    编译方式二:用VS2008打开工程编译

                                         第一步:用VS打开工程F:\curlpack\curl-7.53.1\projects\Windows\VC9\curl-all.sln

                                         第二步:对libcurl项目,增加包含文件和库文件路径

 

                                         编译libcurl项目,这时我出现链接错误:fatal error LNK1181: 无法打开输入文件“libssh2d.lib”

                                          一看,原来是文件名的问题,将项目属性--》链接器--》输入--》附加依赖项  里面的libssh2d.lib 修改为 libssh2.lib即可编译成功

                                 第三步:同样增加curl项目的包含文件和包含库的项目,编译curl,即可成功。

                                

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值