Open SSL 开发环境配置
Open SSL 开发环境配置
最后更新日期:2014-05-13
阅读前提:VisualStudio的基本使用、Cent OS的基本使用
环境: Windows 8.1 64bit英文版,Visual Studio 2013 Professional Update1英文版,ActivePerl 5.16.3,openssl-1.0.1g,Cent OS 6.5 (32位),openssl-1.0.1e
在Windows下配置Open SSL开发环境
编译32位Open SSL 依赖库
[1]从Active Perl官网中下载ActivePerl 5.16.3 for Windows(64-bit,x64)并安装
[2]从Open SSL官网中下载openssl-1.0.1g.tar.gz解压缩到d:\sdk
当然你也可以解压缩到其它路径
[3]启动[Visual StudioTools] -> [VS2013 x86 Native Tools Command Prompt]程序,进入d:\sdk\openssl_1.0.1g目录下运行命令
perlConfigure VC-WIN32 no-asm
在ms子目录下会生成do_nasm.bat等文件
[4]在当前目录(D:\sdK\sopenssl-1.0.1g)调用下面的命令
ms\do_nasm.bat
在当前目录的ms子目录下生成nt.make和ntdll.make文件
[5]运行下面的命令,在out32目录下生成静态库
nmake-f ms\nt.mak
也可以使用下面的命令在out32dll目录下生成动态库
nmake-f ms\ntdll.mak
[6]在Visual Studio 2013下新建Win32控制台工程,不要自动生成代码,添加Source.cpp文件,用下面的代码测试Open SSL开发环境是否正常
- #include <string>
- #include <iomanip>
- #include <iostream>
- #include <openssl/md5.h>
- using namespace std;
- #ifdef WIN32
- #pragma comment(lib, "libeay32.lib")
- #pragma comment(lib, "ssleay32.lib")
- #endif
- int main(int argc, char* argv[])
- {
- std::string str = "1234";
- unsigned char md[MD5_DIGEST_LENGTH];
- char tmp[3] = { 0 };
- MD5((const unsigned char*)str.c_str(), str.size(), md);
- for (int i = 0; i < MD5_DIGEST_LENGTH; i++)
- {
- cout<<setw(2)<<setfill('0')<<hex<<(int)(md[i]);
- }
- cout << endl;
- return 0;
- }
测试没问题后,就可以用类似的方式编译出Open SSL 64位动态库和静态库文件
编译64位Open SSL依赖库
启动[Visual Studio Tools] -> [VS2013 x64 Native Tools Command Prompt]程序,进入d:\sdk\openssl_1.0.1g目录下运行下面六个命令
perlConfigure VC-WIN64A no-asm
ms\do_win64a.bat
nmake-f ms\nt.mak clean
nmake-f ms\ntdll.mak clean
nmake- f ms\nt.mak
nmake-f ms\ntdll.mak
由于产生的OpenSSL64位依赖库同32位依赖库同名而且同位置,所以我们只要把刚才新建的Win32项目,在项目属性页的[Configulation Manager]中把平台属性改成x64就可以正常调用OpenSSL 64位依赖库了。上面命令中的“clean”参数是为了清除原来32位的文件否则nmake会失败,同理从64位依赖库改回32位也要用到“clean”参数。
你还可以用下面的两条命令分别测试生成的Open SSL静态库和动态库是否正常
nmake- f ms\nt.mak test
nmake-f ms\ntdll.mak test
如何想要把Open SSL生成的Win32依赖库放到指定地方参考可以用下面的命令
perl Configure VC-WIN32 --prefix=F:/openssl
Cent OS下安装Open SSL开发环境
使用下面的两条命令安装Open SSL
yum install openssl
yum install openssl-devel
使用下面的命令查看Open SSL安装位置
whereis openssl
Windows下的libeay32.lib、ssleay32.lib分别对应linux下的libcrypto.so、libssl.so文件,它们缺省在/usr/lib路径下,头文件在/usr/incude目录下。
把上面的源代码复制到Cent OS后, 借助CMake工具编译、运行成功。
下面是CMakeLists.txt文件清单
- #设置项目名称
- PROJECT(OpenSSLTutorial1)
- #要求CMake的最低版本为2.8
- CMAKE_MINIMUM_REQUIRED(VERSION 2.8)
- #添加头文件搜索路径
- INCLUDE_DIRECTORIES(/usr/local/include)
- #添加库文件搜索路径
- LINK_DIRECTORIES(/usr/local/lib)
- #用于将当前目录下的所有源文件的名字保存在变量 DIR_SRCS 中
- AUX_SOURCE_DIRECTORY(. DIR_SRCS)
- #用于指定从一组源文件 source1 source2 … sourceN(在变量DIR_SRCS中定义)
- #编译出一个可执行文件且命名为OpenSSLTutorial1
- ADD_EXECUTABLE(OpenSSLTutorial1 ${DIR_SRCS})
- #添加编译可执行程序所需要的链接库、如果有多个中间用空格隔开
- #第一个参数是可执行程序名称,第二个开始是依赖库
- TARGET_LINK_LIBRARIES(OpenSSLTutorial1 ssl crypto)
libcrypto.so文件实现了各种加密算法,被OpenSSL用于实现SSL, TLSand S/MIME协议,也被用于SSH, OpenPGP等加密标准。
libssl.so库文件实现SSL(theSecure Sockets Layer) v2/v3,和TLS(Transport Layer Security)协议。TLS与SSL在传输层对网络连接进行加密。
补充阅读资料
《调用OpenSSL实现数字签名功能例程(一)》
http://blog.csdn.net/lee353086/article/details/7489863
《调用OpenSSL实现数字签名功能例程(二)》
http://blog.csdn.net/lee353086/article/details/7489870
《VC2008下编译OpenSSL》
http://blog.csdn.net/lee353086/article/details/7378835
《64位Win7下用VS2010编译OpenSSL》
http://blog.csdn.net/henter/article/details/8364532
《wchar_t的问题》
http://bbs.chinaunix.net/archiver/?tid-1350913.html
《CentOS的软件安装方法rpm和yum》
http://www.discuz.net/thread-3513163-1-1.html
http://blog.csdn.net/lee353086/article/details/39433411
Open SSL 开发环境配置的更多相关文章
- PHP开发环境配置系列(四)-XAMPP常用信息
PHP开发环境配置系列(四)-XAMPP常用信息 博客分类: PHP开发环境配置系列 xamppphp 完成了前面三篇后(<PHP开发环境配置系列(一)-Apache无法启动(SSL冲突)> ...
- Python开发环境配置
好久没有写博客了,自从6月份毕业后,进入一家做书法.字画文化宣传的互联网公司(www.manyiaby.com),这段时间一直在进行前端开发,对于后端的使用很少了,整天都是什么html.css.jav ...
- Visual studio 通用开发环境配置:SDL,FFMPEG为例
引言 每一个C++库的使用都是从开发环境的配置开始的,其实每个库的配置过程都是大同小异,总结下来有下面几个步骤: 下载库文件,这里假定是已经预先编译完成的. 配置库文件的包含目录(include)和库 ...
- AndroidStudio开发环境配置-Windows
Android Studio开发环境配置-Windows 最近突发奇想,开始研究Android开发.开始时使用Eclipse作为开发IDE,结果各种不好使,首先下载和安装SDK,以及不同版本的Imag ...
- WIN10下java8的开发环境配置与第一个java程序
一.开发环境配置 1.在官网上下载jdk-8u111-windows-x64.exe 2.运行安装包,可以自定义安装路径 3.进入环境变量设置: 计算机右键-->属性-->高级系统设置-- ...
- Mac下golang开发环境配置
go语言在开发效率和运行效率中的优势让很多人青睐,所以有倾向打算转向go语言的开发. 下面介绍在Mac OS X中golang的开发环境配置. 1.安装brew brew是一个mac下的由ruby开发 ...
- win7 x64 vs2010 directShow开发环境配置
近来工作需要,要用dirrectShow写一个视频播放的demo验证自己的想法.开发环境配置了好久都没有成功,最后终于弄完,现在记录下来,以后有同学遇到同样问题,可以以此法解决. windows SD ...
- 基于Eclipse的Hadoop应用开发环境配置
基于Eclipse的Hadoop应用开发环境配置 我的开发环境: 操作系统ubuntu11.10 单机模式 Hadoop版本:hadoop-0.20.1 Eclipse版本:eclipse-java- ...
- XMPP开发环境配置
首先配置XMPP开发环境配置需要的软件 先安装xampp-osx-1.8.3-5-installer.dmg 安装成功后launchpad里会多出一个XAMPP(其他),点开里面的manager-os ...
随机推荐
- nginx简介(轻量级开源高并发web服务器:大陆使用者百度、京东、新浪、网易、腾讯、淘宝等)(并发量5w)(一般网站apache够用了,而且稳定)
nginx简介(轻量级开源高并发web服务器:大陆使用者百度.京东.新浪.网易.腾讯.淘宝等)(并发量5w)(一般网站apache够用了,而且稳定) 一.总结 1.在连接高并发的情况下,Nginx是A ...
- java根据xml配置文件导出excel通用方法
java web项目中时常会用到导出功能,而导出excel几乎是每个项目必备的功能之一.针对形形色色的导出方法及个人平时的工作经验,特将导出excel方法整理成通用的方法,根据xml配置来实现特定的导 ...
- [Ramda] Handle Branching Logic with Ramda's Conditional Functions
When you want to build your logic with small, composable functions you need a functional way to hand ...
- Hadoop基本原理之一:MapReduce 分类: A1_HADOOP 2014-08-17 19:26 1113人阅读 评论(0) 收藏
1.为什么需要Hadoop 目前,一块硬盘容量约为1TB,读取速度约为100M/S,因此完成一块硬盘的读取需时约2.5小时(写入时间更长).若把数据放在同一硬盘上,且全部数据均需要同一个程序进行处理, ...
- LinearLayout的一些注意事项 分类: H1_ANDROID 2013-10-26 23:01 856人阅读 评论(0) 收藏
1.orientation的默认值为horizontal,即从左向右排列.由于一般从上向下排列,所以必须指定orientation属性. 2.layout_gravity与gravity的区别: (1 ...
- 使用DatagramSocket与DatagramPacket传输数据 分类: B1_JAVA 2013-10-12 13:00 1936人阅读 评论(0) 收藏
参考传智播客毕向东JAVA视频. 注: DatagramSocket发送的每个包都需要指定地址,而Socket则是在首次创建时指定地址,以后所有数据的发送都通过此socket. A socket is ...
- SocketChannel API用法
java.nio.channels 类 SocketChannel java.lang.Object java.nio.channels.spi.AbstractInterruptibleChanne ...
- .NET-架构优化实战-梳理篇
原文:.NET-架构优化实战-梳理篇 前言 程序员输出是他敲写的代码,那么输入就是他思考好的设计.因此不做设计是不存在,设计只分优秀的设计和糟糕的设计.为了避免过度设计浪费成本,需要针对现有业务与问题 ...
- ITFriend创业败局(五):创业可以停止,公司必须注销,不然后果很严重
马上又要继续出来创业做事了,想到要注册公司,有个麻烦事. 事情得回到2014年9月. 当时,由于各种因素,决定放弃ITFriend,当然也放弃了原来了公司.先是,咨询了横德瑞的陈总,关于公司注销的事. ...
- Undefined symbols for architecture i386: "_OBJC_CLASS_$_KKGridView", referenced from:
Undefined symbols for architecture i386: "_OBJC_CLASS_$_KKGridView", referenced from: