经过查看openssl源码自带的Makefile,发现:

1) 从0.9.7开始 https://www.openssl.org/source/old/0.9.x/openssl-0.9.7k.tar.gz

就有 LIBS= libcrypto.a libssl.a,而没有对ssleay32的声明。

2)1.0.1c里也有:
LIBS= libcrypto.a libssl.a
但是还多了:

  1. @set -e; if [ -n "$(SHARED_LIBS)" ]; then \
  2. tmp="$(SHARED_LIBS)"; \
  3. for i in $${tmp:-x}; \
  4. do \
  5. if [ -f "$$i" -o -f "$$i.a" ]; then \
  6. ( echo installing $$i; \
  7. if [ "$(PLATFORM)" != "Cygwin" ]; then \
  8. cp $$i $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/$$i.new; \
  9. chmod 555 $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/$$i.new; \
  10. mv -f $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/$$i.new $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/$$i; \
  11. else \
  12. c=`echo $$i | sed 's/^lib\(.*\)\.dll\.a/cyg\1-$(SHLIB_VERSION_NUMBER).dll/'`; \
  13. cp $$c $(INSTALL_PREFIX)$(INSTALLTOP)/bin/$$c.new; \
  14. chmod 755 $(INSTALL_PREFIX)$(INSTALLTOP)/bin/$$c.new; \
  15. mv -f $(INSTALL_PREFIX)$(INSTALLTOP)/bin/$$c.new $(INSTALL_PREFIX)$(INSTALLTOP)/bin/$$c; \
  16. cp $$i $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/$$i.new; \
  17. chmod 644 $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/$$i.new; \
  18. mv -f $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/$$i.new $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/$$i; \
  19. fi ); \
  20. if expr $(PLATFORM) : 'mingw' > /dev/null; then \
  21. ( case $$i in \
  22. *crypto*) i=libeay32.dll;; \
  23. *ssl*) i=ssleay32.dll;; \
  24. esac; \
  25. echo installing $$i; \
  26. cp $$i $(INSTALL_PREFIX)$(INSTALLTOP)/bin/$$i.new; \
  27. chmod 755 $(INSTALL_PREFIX)$(INSTALLTOP)/bin/$$i.new; \
  28. mv -f $(INSTALL_PREFIX)$(INSTALLTOP)/bin/$$i.new $(INSTALL_PREFIX)$(INSTALLTOP)/bin/$$i ); \
  29. fi; \
  30. fi; \
  31. done; \
  32. ( here="`pwd`"; \
  33. cd $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR); \
  34. $(MAKE) -f $$here/Makefile HERE="$$here" link-shared ); \
  35. if [ "$(INSTALLTOP)" != "/usr" ]; then \
  36. echo 'OpenSSL shared libraries have been installed in:'; \
  37. echo ' $(INSTALLTOP)'; \
  38. echo ''; \
  39. sed -e '1,/^$$/d' doc/openssl-shared.txt; \
  40. fi; \
  41. fi

所以,在mysy(mingw)静态编译的情况下,永远不会生成ssleay32.dll等文件。

3)使用VS编译的话,做openssl 1.1之前,无论静态还是动态,都会生成ssleay32.lib libeay32.lib这两个文件。

但是从openssl 1.1开始,无论动态还是静态,都会生成ssl.lib和crypto.lib这两个文件

结论:要想彻底搞明白:

1. 使用VS把1.1的第一个版本和1.0.2的最后一个版本,使用相同的编译条件,亲自编译一遍,看看生成结果的文件名称的是否不同。

2. 使用MSYS(mingw)对1.0.1的某个版本,动态和静态版本分别编译一遍,生成结果的文件名称应该是不同的。对于1.1版本和1.0.2版本,不用试,多半结果是相同的。0.9.7版本也可试试。

3. 从openssl.org官网 和 https://github.com/openssl/openssl/releases 不同地点下载的源代码分别编译试试,看看结果是否相同。

4. 可能也不用想那么多,mingw静态编译的结果,一定是ssl.a和crypto.a这两个文件。因为在make之前,必须运行./Configure命令,所以只能在msys下运行,但出来的结果还是windows的。

5. 但是如果是在windows下mingw动态编译(不使用msys),可能不需要运行./Configure,但生成的结果多半是ssleay32.lib libeay32.lib这两个文件。

这么多情况,真是好烦~

自己总结OpenSSL的变化的更多相关文章

  1. OpenSSL所有版本的变化,从1.1开始架构有所变化,生成的lib名称也有所不同了,以及对Qt的影响

    The complete explanation is that 1.0.x and 1.1.x do not have the same naming conventions for the gen ...

  2. PHP的openssl加密扩展使用小结

    h2:first-child, body>h1:first-child, body>h1:first-child+h2, body>h3:first-child, body>h ...

  3. 基于OpenSSL实现C/S架构中的https会话

    在实际生产中实现公司内部的web服务器加密访问时,我们就需要实现公司内部的私钥CA,并且完成对web服务器的签署请求,这样我们就可以在自身的内部机构实现对数据的机密性.完整性.身份验证的访问与传输 实 ...

  4. 关于openssl几个API的一点小收获

    今天心血来潮突然想搞搞openssl了,趁着端午小假,刚好有空可以鼓捣孤岛自己喜欢的东西,出去东奔西跑的实在太造孽了,还是宅起来给自己充充电吧.下载openssl最新代码1.0.1g,修复了" ...

  5. Linux的加密认证功能以及openssl详解

    一.详细介绍加密.解密技术 现在的加密/解密技术主要有三种:对称加密,非对称加密,和单向加密 这三种加密解密技术的组合就是现在电子商务的基础,它们三个有各自最适合的领域,而且所要完成的功能也是不同的, ...

  6. 使用 OpenSSL API 进行安全编程

    创建基本的安全连接和非安全连接 Kenneth Ballard ( kenneth.ballard@ptk.org), 自由程序员 Kenneth 是 Peru State College(位于 Pe ...

  7. iOS push全方位解析(二)【译文】"——生成OpenSSL证书,Provisioning Profile

    这是一篇来自raywenderlich的教程,内容翔实!结构简单透彻.讲解循序渐进.文章质量上乘!是一篇难的的博文!使用半瓶的英语水平翻译了一下: 1.[iOS push全方位解析](一) push的 ...

  8. 使用OpenSSL API进行安全编程

    http://www.ibm.com/developerworks/cn/linux/l-openssl.html OpenSSL API 的文档有些含糊不清.因为还没有多少关于 OpenSSL 使用 ...

  9. PHP5.4的变化关注---What has changed in PHP 5.4.x(转)

    What has changed in PHP 5.4.x Most improvements in PHP 5.4.x have no impact on existing code. There ...

随机推荐

  1. Android四大组件之Activity--管理方式

    1. 概览 Activity的管理有静态和动态两层涵义: 静态是指Activity的代码组织结构,即Application中声明的Activity的集合,这些Activity被组织在一个APK中,有特 ...

  2. Opencv光流运动物体追踪

    光流的概念是由一个叫Gibson的哥们在1950年提出来的.它描述是空间运动物体在观察成像平面上的像素运动的瞬时速度,利用图像序列中像素在时间域上的变化以及相邻帧之间的相关性来找到上一帧跟当前帧之间存 ...

  3. 关于生命周期里执行setState

    React里生命周期的哪些方法里可以执行setState,这对于很多使用React很长时间的开发都是个迷惑的问题. 先看一下完整的生命周期. 再看两篇文章 React componentDidUpda ...

  4. JavaScript函数实现鼠标指向后带图片的提示效果

    转载:http://www.cnblogs.com/jack86514/archive/2009/04/01/1427584.html 当我们在写一个网页程序的时候,很多方法可以提供页面的动态显示,从 ...

  5. Word 2010/2013 菜单栏添加 MathType 菜单

    一般对于 office 的高级版本,比如 word 2010/2013,在手动安装 mathtype 之后,并不会再 word 的菜单栏,创建 mathtype 按钮,此时需要按照如下步骤,手动导入 ...

  6. 为什么唱iOS 6.0选择Mantle

    近来的mt=8" target="_blank" rel="external">iOS的6.0版本号已经成功上线了. 18人月的投入,2500个 ...

  7. sublime 内容高级搜索

    在发展中经常需要搜索内表面的文件.更好地想找到$video->getTitle() 在该文件中使用的表面.好了,这个时候就需要使用高级搜索功能,的操作,如以下: ctrl+shif+f纽带 例如 ...

  8. matlab 工具函数 —— logdet(A)

    当参数 A 是正定矩阵(positive definite)时,logdet 利用相关矩阵分解的性质,将比 log(det(A)) 获得更快的效率: function y = logdet(A) tr ...

  9. C#WPF 如何绘制几何图形 图示教程 绘制sin曲线 正弦 绘制2D坐标系 有图有代码

    原文:C#WPF 如何绘制几何图形 图示教程 绘制sin曲线 正弦 绘制2D坐标系 有图有代码 C#WPF 如何绘制几何图形? 怎么绘制坐标系?绘制sin曲线(正弦曲线)? 这离不开Path(Syst ...

  10. AABB边框、OBB边框、通过比较球包围

    1) AABB 包围盒: AABB 包围盒是与坐标轴对齐的包围盒, 简单性好, 紧密性较差(尤其对斜对角方向放置的瘦长形对象, 採用AABB, 将留下非常大的边角空隙, 导致大量不是必需的包围盒相交測 ...