4

Fedora-18 で提供されるパッケージには楕円曲線暗号が含まれていないため、独自の OpenSSL バイナリをビルドする必要があります。次のコマンドを実行します。

./config --prefix=/home/USERNAME/bin/ssl --openssldir=/home/USERNAME/bin/ssl/openssl -fPIC zlib no-idea no-mdc2 no-rc5
make depend
make

しかし、リンク エラーがあります。

../libcrypto.a(x86_64cpuid.o): In function `OPENSSL_cleanse':
(.text+0x1a0): multiple definition of `OPENSSL_cleanse'
../libcrypto.a(mem_clr.o):mem_clr.c:(.text+0x0): first defined here
../libcrypto.a(cmll-x86_64.o): In function `Camellia_cbc_encrypt':
(.text+0x1f00): multiple definition of `Camellia_cbc_encrypt'
../libcrypto.a(cmll_cbc.o):cmll_cbc.c:(.text+0x0): first defined here
../libcrypto.a(aes-x86_64.o): In function `AES_encrypt':
(.text+0x460): multiple definition of `AES_encrypt'
../libcrypto.a(aes_core.o):aes_core.c:(.text+0x62a): first defined here
../libcrypto.a(aes-x86_64.o): In function `AES_decrypt':
(.text+0x9f0): multiple definition of `AES_decrypt'
../libcrypto.a(aes_core.o):aes_core.c:(.text+0xad0): first defined here
../libcrypto.a(aes-x86_64.o): In function `private_AES_set_encrypt_key':
(.text+0xab0): multiple definition of `private_AES_set_encrypt_key'
../libcrypto.a(aes_core.o):aes_core.c:(.text+0x0): first defined here
../libcrypto.a(aes-x86_64.o): In function `private_AES_set_decrypt_key':
(.text+0xd80): multiple definition of `private_AES_set_decrypt_key'
../libcrypto.a(aes_core.o):aes_core.c:(.text+0x403): first defined here
../libcrypto.a(aes-x86_64.o): In function `AES_cbc_encrypt':
(.text+0xfa0): multiple definition of `AES_cbc_encrypt'
../libcrypto.a(aes_cbc.o):aes_cbc.c:(.text+0x0): first defined here
4

2 に答える 2

9

SLES 11 Linux で OpenSSL 1.0.1e をコンパイルするときに同じ問題が発生しました。別の Web サイトで、make を呼び出す前に「make clean」を発行するヒントを見つけました。

私の場合、失敗した最初の試みは次のとおりです。

通常のユーザー (root ではない) としてログオン:

. ./config
make

これは、質問で言及したのと同じエラーで失敗しました。

成功した試みは次のとおりです。

su
make clean
./config zlib
make
make install
于 2013-09-04T07:44:23.113 に答える
3
./config --prefix=/home/USERNAME/bin/ssl --openssldir=/home/USERNAME/bin/ssl/openssl -fPIC zlib no-idea no-mdc2 no-rc5
make depend
make

には-fPIC、 を使用しますshared

--prefixを使うので必要ありません--openssldir。したがって、構成の呼び出しは次のようになります。

./config shared zlib no-idea no-mdc2 no-rc5 no-ssl2 no-ssl3 \
    enable-ec_nistp_64_gcc_128 --openssldir=/home/USERNAME/bin/ssl/openssl

行に関するいくつかのメモ:

  • enable-ec_nistp_64_gcc_128GCC が 128 ビット整数を提供する 64 ビット プラットフォームのスピードアップです。
  • no-comp通常、圧縮すると情報が漏洩する可能性があるため、必要です
  • 圧縮すると情報が漏洩するため、通常は必要ありませんzlib
  • no-ssl2安全でないため、SSLv2 を完全に削除します。
  • no-ssl3安全でないため、SSLv3 を完全に削除します。

--openssldir=/home/USERNAME/bin/ssl/openssl意味:

  • バイナリが入ります/home/USERNAME/bin/ssl/openssl/bin
  • ライブラリは/home/USERNAME/bin/ssl/openssl/lib
  • ヘッダーが入ります/home/USERNAME/bin/ssl/openssl/include

次に、次を実行するだけです。の必要はありませんmake depend

$ make
$ sudo make install

既存の構成を消去してから再構成する必要がある場合は、次の手順を実行します。

make clean && make dclean

make dclean再構成の鍵です。


OpenSSL wiki のコンパイルとインストールも参照してください。

于 2015-05-15T20:35:07.737 に答える