OpenSSL は、特定のオプションを指定してビルドしないと valgrind とうまく連携しないため、プログラムを簡単にデバッグできるように、OpenSSL を再度ビルドしました。問題は、プログラムをビルドするたびに、必要のない OpenSSL ライブラリにリンクすることです。私のmakefileはたくさん出力されますが、最も重要な2行は次のとおりです。
cc /usr/local/ssl/lib/libcrypto.so.1.0.0 /usr/local/ssl/lib/libssl.so.1.0.0 -L/opt/local/lib -shared -o bin/libcbitcoin-crypto.2.0.so build/CBOpenSSLCrypto.o
cc build/testCBNodeFull.o -L/home/matt/Desktop/cbitcoin/bin -lcbitcoin.2.0 -lcbitcoin-network.2.0 -lcbitcoin-storage.2.0 -lcbitcoin-threads.2.0 -lcbitcoin-logging.2.0 -lcbitcoin-crypto.2.0 -lcbitcoin.2.0 -lcbitcoin-file-ec.2.0 -lcbitcoin-rand.2.0 -L/opt/local/lib -lpthread -levent_core -levent_pthreads /usr/local/ssl/lib/libcrypto.so.1.0.0 -o bin/testCBNodeFull
他の場所で提案されているように、必要な OpenSSL ライブラリの正確な場所を指定しています。しかしldd bin/testCBNodeFull
、私にこれを与えます:
libcrypto.so.1.0.0 => /lib/x86_64-linux-gnu/libcrypto.so.1.0.0
リンクしたいライブラリに問題はないようです:
$ file bin/testCBNodeFull
bin/testCBNodeFull: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.24, BuildID[sha1]=0xd9472ecc11e12dc66d165c807a5dbe31fd461cf2, not stripped
$ file /usr/local/ssl/lib/libcrypto.so.1.0.0
/usr/local/ssl/lib/libcrypto.so.1.0.0: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, BuildID[sha1]=0xb75602dc478ae55576e21aac5251b915b1653e73, not stripped
ご覧のとおり、どちらも x86-64 としてコンパイルされています。実行可能ファイルの共有ライブラリの場所を変更できるツールがあるのではないでしょうか?