我在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添加相同的行