Win7 X64家庭普通版 + VS2012 安装OpenSSL过程

来源:互联网 发布:淘宝开源项目 编辑:程序博客网 时间:2024/05/07 22:09

一、基础环境需求  

1、下载必要软件  

◆ActivePerl 

软件下载网址:http://www.activestate.com/activeperl/downloads/


安装Perl, 并在环境变量 中添加path=C:\perl\bin(C:\perl为Perl的安装路径)

◆C++编译器:Microsoft Visual C++

Microsoft Visual C++,(简称Visual C++、MSVC、VC++或VC)是微软公司的C++开发工具,具有集成开发环境,可提供编辑C语言、VC、VB、 C#等编程语言。VC++整合了便利的除错工具,特别是整合了微软视窗程式设计(Windows API)、三维动画DirectX API,Microsoft.NET框架。用例中使用版本是Microsoft Visual C++ 2012。


◆OpenSSL 

软件下载网址:http://www.openssl.org/source/



2、软件安装

ActivePerl安装完成后,用cmd命令进入安装目录C:\Perl\eg下,输入“perl example.pl”,如果显示:Hello from ActivePerl!,则说明软件已经正常安装。


3、X64的编译命令

这里要编译出64位的库文件,所以应该先仔细阅读openssl目录下的INSTALL.W64文件。

第一步:

启动VS2010命令行窗口,在“开始”菜单 Visual Studio 2012 中选择Visual Studio Tools,在其中选择Visual Studio x64 Win64命令提示(2012),注意不要选择Visual Studio x64 Win64兼容工具命令提示(2012),也不要选择Visual Studio IDE里面“工具”菜单中的"Visual Studio命令提示",进入那个命令窗口以后使用的默认编译器是32位而不是64位编译器。也可以在命令行窗口中,进入目录 C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\bin\amd64\ ,执行命vcvar64.bat。 (如果想要编译出32位的库文件,在“开始”菜单 Visual Studio 2012 中选择Visual Studio Tools,在其中选择Visual Studio 命令提示(2012)。或者在命令行窗口中,进入目录C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\bin\ ,执行vcvars32.bat。)

第二步:

         进入Openssl文件所在目录C:\openssl-1.0.2c\ ,执行下面的命令:

    运行configure:

    C:\openssl-1.0.2c>perl Configure VC-WIN64A --prefix= C:\openssl-1.0.2c           (使用--prefix=...来指定openssl编译好以后的安装路径

    创建Makefile文件:
    ms\do_win64a 

    (编辑ms/nt.mak (或者ms/ntdll.mak),修改输入目录:
    # The output directory for everything intersting
    OUT_D=out64
    # The output directory for all the temporary muck
    TMP_D=tmp64
    # The output directory for the header files
    INC_D=inc64
    INCO_D=inc64/openssl
    nmake -f ms/nt.mak 成功后即可得到libeay64.lib)

   不执行上述括号中语句,由于产生的OpenSSL64位依赖库同32位依赖库同名而且同位置,所以我们只要把刚才新建的Win32项目,在项目属性页的[Configulation Manager]中把平台属性改成x64就可以正常调用OpenSSL 64位依赖库了。    

    编译动态库:
    nmake -f ms\ntdll.mak
    编译静态库:
    nmake -f ms\nt.mak

    测试动态库:
    nmake -f ms\ntdll.mak test
    测试静态库:
    nmake -f ms\nt.mak test

    安装动态库:
    nmake -f ms\ntdll.mak install
    安装静态库:
    nmake -f ms\nt.mak install

    清除上次动态库的编译,以便重新编译:
    nmake -f ms\ntdll.mak clean
    清除上次静态库的编译,以便重新编译:
    nmake -f ms\nt.mak clean

第三步:

在项目名称中点击“右键”,选择“属性”,从里面找到“VC++目录”,找到包含目录和库目录。其中包含目录指向你的Openssl的头文件的目录,库目录指向你的Lib、Dll所在的目录。

然后切换到“链接器”-> “输入”,在“附加依赖项”中,加入两个Lib文件:libeay32.lib  ssleay32.lib 这样就完成了静态库的引用。

VS2012调用OpenSSL库的三种方式:

先说说普通的两种方法:

方法1:  通过设置工程配置来添加lib库.

A、添加工程的头文件目录:工程---属性---配置属性---c/c++---常规---附加包含目录:加上头文件存放目录。

B、添加文件引用的lib静态库路径:工程---属性---配置属性---链接器---常规---附加库目录:加上lib文件存放目录。

C  然后添加工程引用的lib文件名:工程---属性---配置属性---链接器---输入---附加依赖项:加上lib文件名。

这种方法比较繁琐,且不直观,而且还可能要争对debug版本和release版本作不同的配置,因为我们生成的两个版本的库可能放在不同的目录中的.

方法2: 使用编译语句:

#ifdef _DEBUG
#pragma comment(lib,"..\\debug\\LedCtrlBoard.lib")
#else
#pragma comment(lib,"..\\release\\LedCtrlBoard.lib")
#endif

这种方法直观,方便,且可以按如上直接区分出Debug版本和Release版本的不同目录.当然,通过宏,还可以区分更多版本.

但是在指定目录时,不小心容易出错.

方法3: 直接添加库文件到工程中.

就像你添加.h和.cpp文件一样,把lib文件添加到工程文件列表中去.

VC中,切换到"解决方案视图",--->选中要添加lib的工程-->点击右键-->"添加"-->"现有项"-->选择lib文件-->确定.

就是这么简单,搞定.

这个方法适用于在我的工程的debug版本和Release版本中都使用同一个lib库文件时.这样就省去了你1方法配置环境的繁琐,也省去了方法2种语句的可能性错误发生.


注意:如果调用的OpenSSL是64位的一定将配置管理器中的平台类型修改为X64,否则,不能正常使用64位的OpenSSL库。


补充:

 将ms\ntdll.mak拷贝一份为ms\ntdll_debug.mak文件,前者用于release版本编译,后者用于debug版本编译。

 1)打开ms\ntdll.mak文件,进行如下修改:

      a)找到“INSTALLTOP=xxx”与“OPENSSLDIR=xxx”行并设置“xxx”为具体的安装路径;

      b)找到“SSL=ssleay32”行并修改为“SSL=ssleay32MD”;

      c)找到“CRYPTO=libeay32”行并修改为“CRYPTO=libeay32MD”。

 2)打开ms\ntdll_debug.mak文件,进行如下修改:

      a)找到“INSTALLTOP=xxx”与“OPENSSLDIR=xxx”行并设置“xxx”为具体的安装路径;

      b)找到包含“CFLAG= /MD”字样的行并修改为“CFLAG= /MDd”;

      c)找到“SSL=ssleay32”行并修改为“SSL=ssleay32MDd”;

      d)找到“CRYPTO=libeay32”行并修改为“CRYPTO=libeay32MDd”。

 3)接下来按照如下命令进行编译:

      nmake -f ms/ntdll.mak

      nmake -f ms\ntdll.mak test

      nmake -f ms\ntdll.mak install

      nmake -f ms/ntdll.mak clean

以上命令编译release版本openssl,编译debug版本只需要把上述命令中的ntdll.mak文件换成ntdll_debug.mak文件即可。

0 0
原创粉丝点击