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

我在CentOS 6.02 64位操作系统上构buildopenssl时遇到了一些问题。 每当我试图build立它,我面临的错误如下:

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. 

这是汇编代码中的寻址问题。 (32位与64位寻址。)有一个错误提出这一点。

要快速修复,请使用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

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

然后进行以下更改:

后:

子轮1_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添加相同的行