当前位置: 代码迷 >> 综合 >> 两小时搞定vs08编译openssl/libcurl/libssl2静态库
  详细解决方案

两小时搞定vs08编译openssl/libcurl/libssl2静态库

热度:16   发布时间:2024-03-09 19:37:49.0

win32程序实现网络访问采用了libcurl库,因为需要支持https,需要编译openssl版本的libcurl库。
win32程序实现ssh访问采用了libssl2库。

 

进入正题:
教程基于以下版本的文件:

openssl-1.0.1u.tar.gz
ActivePerl-5.8.8.822-MSWin32-x86-280952.zip
curl-7.73.0.zip
libssl2-1.9.0-20201028.tar.gz

一 openssl编译

1,正确安装Perl(ActivePerl-5.8.8.822-MSWin32-x86-280952.zip),安装时会将Perl的路径设置到环境变量Path中,重启后生效

2,源码释放(openssl-1.0.1u.tar.gz)

3,先编译Release版本

(1)打开Visual Studio 2008命令提示
(2)cd到源码解压目录,执行perl Configure VC-WIN32 no-asm --prefix=e:/openssl
(3)执行.\ms\do_ms.bat
(4)nmake -f ms\nt.mak
(5)等待编译完成,OpenSSL的文件夹下会多出inc32(openssl的头文件),out32的文件夹(openssl的静态库文件)
(6)清理,执行nmake -f ms\nt.mak clean

4,再编译debug版本
(1)打开Visual Studio 2008命令提示
(2)cd到源码解压目录,执行perl Configure debug-VC-WIN32 no-asm --prefix=e:/openssl
(3)执行.\ms\do_ms.bat
(4)nmake -f ms\nt.mak
(5)等待编译完成,OpenSSL的文件夹下会多出inc32(openssl的头文件),out32.dbg的文件夹(openssl的debug静态库文件)
(6)清理,执行nmake -f ms\nt.mak clean

5,拷出来待用
目录结构如下:
D:openssl
D:openssl/include/ (拷贝重命名自上述的inc32目录)
D:openssl/lib/
D:openssl/lib/libeay32.lib(拷贝自out32目录)
D:openssl/lib/ssleay32.lib(拷贝自out32目录)
D:openssl/lib/libeay32d.lib(拷贝自out32.dbg目录libeay32.lib文件)
D:openssl/lib/ssleay32d.lib(拷贝自out32.dbg目录ssleay32.lib文件)


值得注意的是openssl版本之间差距较大,新版本的openssl生成后名称已经不是libeay32.lib和ssleay32.lib了。

二 libcurl静态库编译
需要支持https,因此需要编译openssl版本的静态库。
1,解压源码,使用VS08打开curl-7.73.0/projects/windows/VC9/curl-all.sln
2,vs08-libcurl-debug版的编译:
选择LIB Debug - LIB Openssl选项
设置项目属性:
(1)常规-MFC的使用-在静态库中使用MFC
(2)C/C++-附加包含目录-添加D:openssl/include/ 
(3)C/C++-代码生成-多线程调试(/MTd)
(4)管理员-附件依赖项-添加libeay32d.lib和ssleay32d.lib
(5)管理员-附加库目录-D:openssl/lib/
(6)编译后,在curl-7.73.0/build/Win32/VC9/LIB Debug - LIB OpenSSl/下出现libcurld.lib,大功告成

3,vs08-libcurl-release版的编译:
选择LIB Release - LIB Openssl选项
设置项目属性:
(1)常规-MFC的使用-在静态库中使用MFC
(2)C/C++-附加包含目录-添加D:openssl/include/ 
(3)C/C++-代码生成-多线程(/MT)
(4)管理员-附件依赖项-添加libeay32.lib和ssleay32.lib
(5)管理员-附加库目录-D:openssl/lib/
(6)编译后,在curl-7.73.0/build/Win32/VC9/LIB Release - LIB OpenSSl/下出现libcurl.lib,大功告成

三 libssl2静态库编译
1,解压源码,使用VS08打开libssl2-1.9.0-20201028/win32/libssh2.dsw
2,vs08-libssl2-debug版的编译:
选择Openssl LIB Debug编译选项
设置项目属性:
(1)常规-MFC的使用-在静态库中使用MFC
(2)C/C++-附加包含目录-添加D:openssl/include/ 
(3)C/C++-代码生成-多线程调试(/MTd)
(4)管理员-附件依赖项-添加libeay32d.lib和ssleay32d.lib
(5)管理员-附加库目录-D:openssl/lib/
(6)编译后,在libssl2-1.9.0-20201028/win32/Debug_lib/下出现libssh2d.lib,大功告成

3,vs08-libssl2-Release版的编译:
选择Openssl LIB Release编译选项
设置项目属性:
(1)常规-MFC的使用-在静态库中使用MFC
(2)C/C++-附加包含目录-添加D:openssl/include/ 
(3)C/C++-代码生成-多线程(/MT)
(4)管理员-附件依赖项-添加libeay32.lib和ssleay32.lib
(5)管理员-附加库目录-D:openssl/lib/
(6)编译后,在libssl2-1.9.0-20201028/win32/Release_lib/下出现libssh2.lib,大功告成

  相关解决方案