Win7 下使用 VS2015 交叉编译最新 libcurl 7.51.0(包含openssl-1.0.2j,zlib-1.2.8)

来源:互联网 发布:mac dock图标大小 编辑:程序博客网 时间:2024/05/16 14:04

本文参考了以下网友的辛勤劳动,在此我向你们表示感谢:
http://blog.csdn.net/hujkay/article/details/18986153

编译前的准备

  • 下载所需工具源码:

    1. ActivePerl
      http://www.activestate.com/activeperl/downloads
      或者StrawbarryPerl,我没有尝试,请各位自行尝试,安装路径默认即可。

    2. zlib
      http://zlib.net/zlib-1.2.8.tar.gz
      zlib可以使得HTTP请求支持gzip压缩。

    3. OpenSSL
      https://www.openssl.org/source/
      OpenSSL使用与支持SSL,例如HTTPS的请求。

    4. CURL
      https://curl.haxx.se/download.html
      这货居然在写这篇教程的时候更新了。。。
      3天前还是7.50.3,今天就更新到了7.51.0,那我就一同用最新的来编译得了
      为了最新,只好下载最新的7.51.0
      (其实我的7.50.3都已经编译好了的)。

    5. 安装ActivePerl,然后解压zlib、OpenSSL、CURL到同一个目录下,目录的结构最好和我的一样,zlib、OpenSSL文件夹的文件名最好也和我的一样。

VS编译环境准备【编译32位、64位有区别】

以下所有操作,如果没有特别说明,都是在【VS2015开发人员命令提示】中进行的;
具体位置一般是【开始->所有程序->Visual Studio 2015-> Visual Studio Tools】下;

1. 【编译32位环境】    命令如下:        cd C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin        vcvars32.bat
2. 【编译64位环境】    命令如下:        cd C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\amd64        vcvars64.bat

编译zlib-1.2.8

命令行进入zlib目录,然后执行以下命令,很快就好了。

nmake -f win32/Makefile.msc OBJA="inffast.obj"

编译OpenSSL-1.0.2j

我个人建议按照本教程交叉编译之前,先自己练习一下单独编译OpenSSL,可以按照我的这个教程来:
http://blog.csdn.net/YAOJINGKAO/article/details/53041165

但是在这里,我不建议按照单独编译这个方法来,为什么,这是有原因的
因为编译好之后还要有个移动编译好的文件的过程,不然在后面编译libcurl的时候会有提示找不到xxx.lib,为了省去这个麻烦,一步到位,我还是建议各位用libcurl自带的Openssl-built.bat来编译Openssl。

直接在开发人员命令提示中进入【curl-7.51.0\projects】目录;
然后设置openssl目录和zlib

set OPENSSL_PATH=..\..\opensslset ZLIB_PATH=..\..\zlib

接下来我们就是要利用openssl-build.bat这个文件来帮我们编译好openssl和文件的移动工作。
输入以下命令可以查看具体的参数:

build-openssl.bat help

openssl-build.bat参数

这里,我们以编译vc14、32位、debug版静态链接库为例:
输入以下命令就行了:

build-openssl.bat vc14 x86 debug "c:\curl\openssl"

出现如下图的结果就表示编译成功了。一切都好就是编译时间有点点长,耐心就好。
编译结果
如果有练习单独编译OpenSSL的朋友就会发现不同了,大部分输出都是一样的,只是在这里多了最下面四条移动的信息,其实你可以打开build-openssl.bat这个文件,它在编译之后帮我们把编译好的文件移动到了一个合理的位置,方便以后的libcurl编译。
build-openssl.bat

这里写图片描述

编译libcurl-7.51.0

这个最简单了,直接在VS里面编译就行了。
前面的工作都完成之后,什么都不要移动,直接在资源管理器中进入【curl\curl-7.51.0\projects】目录;

注意:编译7.51.0之前版本的libcurl需要额外双击运行generate.bat,让它生成VS工程文件,最新的7.51.0版本则不需要运行,文件夹内也没有了这个文件。直接下一步就行了

好了之后,进入【C:\curl\curl-7.51.0\projects\Windows】文件夹就能看到所有的能够支持编译的vc版本
支持编译的VC版本

这里我还是以vc14(VS2015为例),进入VC14文件夹,打开curl-all.sln文件:
VS工程

选择编译的版本:LIB Debug - LIB OpenSSL
然后菜单栏->生成->生成解决方案
(BTW:这里其实只要生成libcurl工程就行了。curl工程只是一个demo,无需生成。)

生成好了就可以在【curl\curl-7.51.0\build\Win32\VC14】目录下找到编译好的静态库了。
结果

在这里,如果你有心,在【libcurl工程属性->C/C++->附加包含目录】下发现libcurl对openssl引用的目录是openssl文件夹下的inc32文件夹,之前为什么要强调openssl目录要按照我的文件名来设置,用意是在这里的。
这里写图片描述

至此,你就可以重复编译openssl到最后生成libcurl的所有步骤,生成所有你所需要的链接库了。

1 0
原创粉丝点击