• 自己总结OpenSSL的变化


    经过查看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
    但是还多了:

        @set -e; if [ -n "$(SHARED_LIBS)" ]; then 
            tmp="$(SHARED_LIBS)"; 
            for i in $${tmp:-x}; 
            do 
                if [ -f "$$i" -o -f "$$i.a" ]; then 
                (       echo installing $$i; 
                    if [ "$(PLATFORM)" != "Cygwin" ]; then 
                        cp $$i $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/$$i.new; 
                        chmod 555 $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/$$i.new; 
                        mv -f $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/$$i.new $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/$$i; 
                    else 
                        c=`echo $$i | sed 's/^lib(.*).dll.a/cyg1-$(SHLIB_VERSION_NUMBER).dll/'`; 
                        cp $$c $(INSTALL_PREFIX)$(INSTALLTOP)/bin/$$c.new; 
                        chmod 755 $(INSTALL_PREFIX)$(INSTALLTOP)/bin/$$c.new; 
                        mv -f $(INSTALL_PREFIX)$(INSTALLTOP)/bin/$$c.new $(INSTALL_PREFIX)$(INSTALLTOP)/bin/$$c; 
                        cp $$i $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/$$i.new; 
                        chmod 644 $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/$$i.new; 
                        mv -f $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/$$i.new $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/$$i; 
                    fi ); 
                    if expr $(PLATFORM) : 'mingw' > /dev/null; then 
                    (    case $$i in 
                            *crypto*) i=libeay32.dll;; 
                            *ssl*)    i=ssleay32.dll;; 
                        esac; 
                        echo installing $$i; 
                         cp $$i $(INSTALL_PREFIX)$(INSTALLTOP)/bin/$$i.new; 
                         chmod 755 $(INSTALL_PREFIX)$(INSTALLTOP)/bin/$$i.new; 
                         mv -f $(INSTALL_PREFIX)$(INSTALLTOP)/bin/$$i.new $(INSTALL_PREFIX)$(INSTALLTOP)/bin/$$i ); 
                    fi; 
                fi; 
            done; 
            (    here="`pwd`"; 
                cd $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR); 
                $(MAKE) -f $$here/Makefile HERE="$$here" link-shared ); 
            if [ "$(INSTALLTOP)" != "/usr" ]; then 
                echo 'OpenSSL shared libraries have been installed in:'; 
                echo '  $(INSTALLTOP)'; 
                echo ''; 
                sed -e '1,/^$$/d' doc/openssl-shared.txt; 
            fi; 
        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这两个文件。

    这么多情况,真是好烦~

  • 相关阅读:
    xgqfrms™, xgqfrms® : xgqfrms's offical website of GitHub!
    网上怎么赚钱?如何利用CPA赚钱?
    在农村养殖什么赚钱?要做好哪些预防工作?
    计算机组成的基本硬件设备
    JAVA回溯法求0-1背包
    TensorFlow学习笔记之批归一化:tf.layers.batch_normalization()函数
    数据库连接池的大小值设定,不能随意设置太大的值
    N皇后问题
    19个强大、有趣、又好玩的 Linux 命令!
    JAVA马的遍历
  • 原文地址:https://www.cnblogs.com/findumars/p/6372288.html
Copyright © 2020-2023  润新知