7

CentOS 6.02 64 ビット OS で openssl をビルドする際にいくつかの問題に直面しています。ビルドしようとするたびに、次のエラーに直面します:-

md5-x86_64.s:41: Error: 0xd76aa478 out range of signed 32bit displacement
md5-x86_64.s:50: Error: 0xe8c7b756 out range of signed 32bit displacement
md5-x86_64.s:68: Error: 0xc1bdceee out range of signed 32bit displacement
md5-x86_64.s:77: Error: 0xf57c0faf out range of signed 32bit displacement
md5-x86_64.s:95: Error: 0xa8304613 out range of signed 32bit displacement
Many more errors like this.
4

2 に答える 2

26

アセンブリ コードのアドレッシングに問題があります。(32 ビットと 64 ビットのアドレス指定)。これについてはバグが報告されていました。

簡単に解決するには、no-asmオプションを指定して再コンパイルしてみてください。

cd <openssl-source-directory>
./config no-asm
make && make install

編集: -fPIC フラグがないために発生したエラーを解決するには: を実行しmake clean、行を./config no-asmto./config no-asm -fPICに変更して、実行しますmake && make install

于 2013-01-29T02:35:04.353 に答える
3

ファイル「openssl-x/crypto/md5/asm/md5-x86_64.pl」を開きます

次に、次の変更を行います。

後:

サブ round1_step

{ my ($pos, $dst, $x, $y, $z, $k_next, $T_i, $s) = @_;

次の行を追加します。

+ $T_i = unpack("l",pack("l", hex($T_i))); # convert to 32-bit signed decimal

同様に、sub round2_step、sub round3_step、sub round4_step にも同じ行を追加します。

于 2013-10-18T08:50:11.123 に答える