CentOS 6.02 64位操作系统中的OpenSSL构建错误

时间:2013-01-29 02:18:18

标签: c++ linux openssl centos

我在CentOS 6.02 64位操作系统中构建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.

2 个答案:

答案 0 :(得分:25)

汇编代码中的寻址存在问题。 (32位与64位寻址。)为此提交了bug

要快速修复,请尝试使用no-asm选项重新编译。

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

编辑:要解决因没有-fPIC标志而导致的错误:执行make clean,将./config no-asm的行更改为./config no-asm -fPIC,然后运行make && make install

答案 1 :(得分:2)

打开文件'openssl-x / crypto / md5 / asm / md5-x86_64.pl'

然后进行以下更改:

后:

  

sub round1_step

     

{        我的($ 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&amp;添加相同的行。 sub round4_step