7

我在 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.
4

2 回答 2

26

这是汇编代码中的寻址问题。(32 位与 64 位寻址。)为此提交了一个错误。

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

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

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

于 2013-01-29T02:35:04.353 回答
3

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

然后进行以下更改:

后:

子回合1_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 & sub round4_step 添加相同的行

于 2013-10-18T08:50:11.123 回答