Gcc Oracle Linux中的Valgrind安装错误

Gcc Oracle Linux中的Valgrind安装错误,gcc,x86-64,valgrind,oraclelinux,rdrand,Gcc,X86 64,Valgrind,Oraclelinux,Rdrand,我正在开发Oracle Linux Server 6.5版 GCC版本4.4.7 我正在尝试安装Valgrind-3.17.0,但最终出错。你能就以下问题提出建议吗?提前谢谢 以下是我遵循的步骤: /配置 当我在运行./configure之后检查日志时,我发现一句话如下: 正在检查amd64汇编程序是否知道RDSEED指令。。。没有 安装 priv/guest_amd64_helpers.c:3799: Error: no such instruction: `rdseed %r11d' mak

我正在开发Oracle Linux Server 6.5版

GCC版本4.4.7

我正在尝试安装Valgrind-3.17.0,但最终出错。你能就以下问题提出建议吗?提前谢谢

以下是我遵循的步骤:

/配置

当我在运行./configure之后检查日志时,我发现一句话如下:

正在检查amd64汇编程序是否知道RDSEED指令。。。没有

安装

priv/guest_amd64_helpers.c:3799: Error: no such instruction: `rdseed %r11d'
make[3]: *** [priv/libvex_amd64_linux_a-guest_amd64_helpers.o] Error 1
make[3]: Leaving directory `/usr/src/valgrind-3.17.0/VEX'
make[2]: *** [install] Error 2
make[2]: Leaving directory `/usr/src/valgrind-3.17.0/VEX'
make[1]: *** [install-recursive] Error 1
make[1]: Leaving directory `/usr/src/valgrind-3.17.0'
make: *** [install] Error 2```




这看起来像个bug,您应该在valgrind bugzilla中提交一个问题

同时,您可以修改源文件guest_amd64_helpers.c 通过替换


在相关位置

这看起来像一个bug,您应该在valgrind bugzilla中提交一个问题

同时,您可以修改源文件guest_amd64_helpers.c 通过替换


在相关位置

听起来您的汇编程序无法识别rdseed指令,可能是因为它是一个非常旧的版本

GCC 4.4.7已经有10年的历史了,因此如果您的汇编程序和binutils的版本相似,那么这是可以预料的:该指令直到2012年左右才发明

我认为你需要升级你的工具链,也许还有你的整个操作系统。这可能是使用这些古老的工具会遇到的最小问题


看起来他们在进行配置时确实检查了汇编程序的支持,因此原则上,当汇编程序不支持该指令时,他们可以避免使用该指令,但实际上并不支持。可能是在某个时候,他们决定放弃对这些旧汇编程序的支持,但没有费心从configure中删除测试,也没有将此测试的失败视为致命错误。

听起来您的汇编程序无法识别rdseed指令,可能是因为它是一个非常旧的版本

GCC 4.4.7已经有10年的历史了,因此如果您的汇编程序和binutils的版本相似,那么这是可以预料的:该指令直到2012年左右才发明

我认为你需要升级你的工具链,也许还有你的整个操作系统。这可能是使用这些古老的工具会遇到的最小问题


看起来他们在进行配置时确实检查了汇编程序的支持,因此原则上,当汇编程序不支持该指令时,他们可以避免使用该指令,但实际上并不支持。可能是在某个时候,他们决定放弃对这些旧汇编程序的支持,但没有费心从configure中删除测试,也没有将此测试的失败视为致命错误。

3.16.1安装成功了吗?3.16.1安装成功了吗?我不认为这是valgrind中的错误;相反,它只是不支持OP正在使用的非常旧的工具链。valgrind not building被认为是一个bug。虽然我们可能不支持非常旧的工具链,但configure脚本会检查rdseed支持,如果configure报告它不可用,那么代码应该编译;相反,它只是不支持OP正在使用的非常旧的工具链。valgrind not building被认为是一个bug。虽然我们可能不支持非常旧的工具链,但配置脚本会检查rdseed支持,如果配置报告它不可用,则应编译代码。可以使用.byte手动编码rdseed%r11d,但这可能不是它使用的唯一位置。可以使用.byte手动编码rdseed%r11d,但这可能不是唯一使用它的地方。
#  if defined(__x86_64__)
#  if defined(__do_not_use_this_it_is_broken_on_my_system__)