4

バックグラウンド

すべてのコードが自分でビルドされるように、特定のバージョンの zlib に対して OpenSSL をビルドしたいと考えています。私が使用している多くのライブラリでこれを行っているため、オペレーティング システムのバージョンが異なると動作が異なることはありません。これが厳密に必要ではないことは理解していますが、したいです。

私がしたこと

~/zlib/zlib-1.2.7 で zlib をビルドし、zlib を ~/zlib/lib および ~/zlib/include にインストールしました。

(この投稿では、作業ディレクトリを '~' に置き換えて、すべてのパスを単純化したことに注意してください)

これらの引数を./configに渡すopensslを構築しました

--with-zlib-lib=~/zlib/lib
--with-zlib-include=~/zlib/include

openssl をビルドすると、適切な -I 引数が GCC に渡されていることがわかります

./config --prefix=~/openssl --openssldir=openssl/ssl threads zlib-dynamic shared --with-zlib-lib=~/zlib/lib --with-zlib-include=~/zlib/include && make && make install
. . .
...many lines of output...
. . .
gcc -I.. -I../.. -I../modes -I../asn1 -I../evp -I../../include -I/home/ubuntu/zlib/include -fPIC -DOPENSSL_PIC -DZLIB_SHARED -DZLIB -DOPENSSL_THREADS -D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN_H -Wa,--noexecstack -m64 -DL_ENDIAN -DTERMIO -O3 -Wall -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DMD5_ASM -DAES_ASM -DVPAES_ASM -DBSAES_ASM -DWHIRLPOOL_ASM -DGHASH_ASM   -c -o cm_pmeth.o cm_pmeth.c

OpenSSL が正常にビルドされます。

問題

コマンドでリンクされているzlibのバージョンを確認しldd libssl.soます。

ubuntu@lemming012:~/ben/code/optimiser/libs/3rdParty/openssl/lib$ ldd libssl.so
        linux-vdso.so.1 =>  (0x00007fff3e7ff000)
        libcrypto.so.1.0.0 => /lib/x86_64-linux-gnu/libcrypto.so.1.0.0 (0x00007f
        libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f289bcab000)
        libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f289baa6000)
        libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007f289b88f000)
        /lib64/ld-linux-x86-64.so.2 (0x00007f289c6c7000)

ldd が自分の libz ファイルをリストに報告していることを期待しています。

代わりに、ldd は、libssl がシステムにインストールされているバージョンの libz にリンクされていると報告します。同じディレクトリで ldd を実行する前に、独自のバージョン libz.so.1 を libssl 'lib' ディレクトリにコピーしても、結果は同じです。

質問

私は何を間違えましたか?システムにインストールされているバージョンではなく、自分のバージョンの zlib にOpenSSL をリンクするにはどうすればよいですか?

環境

uBuntu 13.04 x64 GCC でコンパイルし、Make でビルドする

4

2 に答える 2

-2

./config --prefix=/data/services/openssl-1.0.2g 共有 zlib -I/data/services/zlib-1.2.7/include -L/data/services/zlib-1.2.7/lib

于 2016-04-14T06:47:35.133 に答える