环境:win10,vs2005,curl-7.62.0,libssh2-1.8.0,openssl-1.0.2q,zlib-1.2.11
基础配置:系统path环境变量增加
..\Microsoft Visual Studio 8\VC\bin
..\Microsoft Visual Studio 8\VC\Common7\IDE
..\Microsoft Visual Studio 8\VC\include
..\Microsoft Visual Studio 8\VC\PlatformSDK\Include
..\Microsoft Visual Studio 8\VC\lib
..\Microsoft Visual Studio 8\VC\PlatformSDK\Lib
..\NASM
命令环境:..\Microsoft Visual Studio 8\VC\bin,执行vcvars32.bat
一、编译ZLIB
进入zlib-1.2.11\contrib\masmx86,执行
bld_ml32.bat
,生成同目录下OBJ复制OBJ到zlib-1.2.11\根目录,执行
nmake -f win32/Makefile.msc
(根据实际情况修改文件MT或MD编译参数)建目标DLL目录,用于LIBCURL编译
zlib-dll\bin存放zlib1.dll
zlib-dll\include存放zconf.h,zlib.h
zlib-dll\lib存放zdll.lib(动态库导入),zlib.lib (静态库)
二、编译openssl
下载安装ActivePerl,Nasm汇编器
进入openssl-1.0.2q\根目录,执行
perl Configure VC-WIN32 --prefix=openssl-dll
执行
ms\do_nasm
执行
nmake -f ms\ntdll.mak
编译结果在out32dll文件夹内,如果编译静态库执行nmake -f ms\nt.mak
(根据实际情况修改文件MT或MD编译参数)执行
nmake -f ms\ntdll.mak test
检查结果,提示pass为正常,如果编译静态库执行nmake -f ms\nt.mak test
执行
nmake -f ms\ntdll.mak install
将结果out32dll内容复制到步骤2中的目录内并安装,如果编译静态库执行nmake -f ms\nt.mak install
步骤2中openssl-dll为目录DLL目录,用于LIBCURL编译
三、编译libssh2
进入libssh2-1.8.0\win32,修改config.mk,修改zlib目录及openssl目录为前述编译结果目录
编译
第一种编译方法:进入libssh2-1.8.0\根目录,执行
nmake -f NMakefile
,此编译生成DLL,无libssh2.lib第二种编译方法:用VS打开libssh2-1.8.0\win32\libssh2.dsp,将zlib,openssl编译结果include及lib目录加入当前项目C++环境内(根据实际情况修改文件MT或MD编译参数)
- 建目标DLL目录,用于LIBCURL编译
libssh2-dll\bin存放libssh2.dll
libssh2-dll\include存放libssh2.h,libssh2_publickey.h,libssh2_sftp.h
libssh2-dll\lib存放libssh2.lib
四、编译libcurl
- 依据下列目录存放前三步编译结果
somedirectory\
|_curl-src
| |_winbuild
|
|_deps
|_ lib
|_ include
|_ bin
进入curl-7.62.0\winbuild目录
编译
动态库编译命令:
nmake /f Makefile.vc mode=dll VC=8 SSL_PATH=D:\libcurl\OpenSSL-dll ZLIB_PATH=D:\libcurl\zlib-dll SSH2_PATH=D:\libcurl\libssh2-dll ENABLE_IDN=no DEBUG=no WITH_SSL=dll WITH_ZLIB=dll WITH_SSH2=dll
静态库编译命令:
nmake /f Makefile.vc MODE=static RTLIBCFG=static VC=8 SSL_PATH=D:\libcurl-static\openssl-static ZLIB_PATH=D:\libcurl-static\zlib-static SSH2_PATH=D:\libcurl-static\libssh2-static ENABLE_IDN=no DEBUG=no WITH_SSL=static WITH_ZLIB=static WITH_SSH2=static
命令备注:ENABLE_IDN未关闭会导致函数错误,PATH类参数表示其它目录所在位置,WITH类参数表示使用静态编译或动态编译,RTLIBCFG=static参数表示当前用MT参数编译
- 编译结果curl-7.62.0\builds
五、libcurl三方调用
include为curl-7.62.0\builds\libcurl-vc8-x86-release-dll-ssl-dll-zlib-dll-ssh2-dll-ipv6-sspi\curl*所有文件
lib为curl-7.62.0\builds\libcurl-vc8-x86-release-dll-ssl-dll-zlib-dll-ssh2-dll-ipv6-sspi\lib\libcurl.lib
全部DLL为:libcurl.dll,libeay32.dll,libssh2.dll,ssleay32.dll