Valgrind不接受最新版本的glibc。

22

Valgrind不喜欢glibc 2.15:

checking the GLIBC_VERSION version... unsupported version 2.15
configure: error: Valgrind requires glibc version 2.2 - 2.14

我该如何处理这个问题?我需要降级glibc吗?我的操作系统是Ubuntu 12.04。

更新:

所以我试图从源代码下载并安装而不是使用apt-get,因为我正在学习C的艰苦方式。在遇到这个问题后,我试着用apt-get看看是否可行。它为我安装了这个软件包:

libc6-dbg - Embedded GNU C Library: detached debugging symbols
5个回答

18

我也在读这本书,遇到了这个问题。我在谷歌上搜索并最终在这里找到了解决方法。我按照Employeed Russian的建议进入配置文件并进行了调整,最终使它正常工作。

请进入你的配置文件,大约找到第6404行,然后粘贴以下内容:

         2.15)
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: 2.15 family" >&5
$as_echo "2.15 family" >&6; }

$as_echo "#define GLIBC_2_14 1" >>confdefs.h

DEFAULT_SUPP="glibc-2.X.supp ${DEFAULT_SUPP}"
DEFAULT_SUPP="glibc-2.34567-NPTL-helgrind.supp ${DEFAULT_SUPP}"
DEFAULT_SUPP="glibc-2.X-drd.supp ${DEFAULT_SUPP}"
;;

然后我运行了configuremake,最后是sudo make install,然后它就正常工作了。

configure.in文件中,我还添加了一些代码,但我认为这对最终结果不重要,如果确实重要的话,我只是复制了之前引用2.14的内容,然后将其全部更改为2.15。

希望这可以帮助到您。


1
非常感谢您的帮助。我已经成功安装并执行了make和install命令。虽然valgrind现在抱怨使用“安装glibc的debuginfo”,但valgrind本身似乎已经安装成功了。非常感谢。 - Ayusman

10

关于valgrind 3.9.0和glibc 2.19的更新:

我曾经遇到过同样的问题,将以下内容添加到配置脚本中,在darwin)这一行之前,问题便得到了解决:

     2.19)
    { $as_echo "$as_me:${as_lineno-$LINENO}: result: 2.19 family" >&5
$as_echo "2.19 family" >&6; }

$as_echo "#define GLIBC_2_19 1" >>confdefs.h

    DEFAULT_SUPP="glibc-2.X.supp ${DEFAULT_SUPP}"
    DEFAULT_SUPP="glibc-2.34567-NPTL-helgrind.supp ${DEFAULT_SUPP}"
    DEFAULT_SUPP="glibc-2.X-drd.supp ${DEFAULT_SUPP}"
    ;;

在 KUbuntu 14.04 上进行测试


请记住,在此处将行号更改为 6551。所以不要复制它周围的 6404 (对于那些害怕编辑配置文件的人来说)。 - kAmol

9

我应该怎么处理这个问题?

有两种方法:

  1. 使用您的发行版并下载他们已经为您构建的软件包,或者
  2. 找出问题所在(即configure.in中添加2.15后未重新生成configure),然后进行修复。

我需要降级glibc吗?

那可能会使您的系统无法启动(因为大多数其他二进制文件都依赖于2.15)。


3

已更新至valgrind-3.8.1(在任何准当前的Linux系统上都应该能够运行——在Slackware 14.0上测试过):

在“valgrind-3.8.1/configure”文件中,在“2.16”结尾和“darwin”开头之间添加了一个“2.17”选项(大约在第6607行左右)。

完美解决!感谢各位的协助!

祝好!

--at


2

每次发布新版本时,终端都会要求不同版本的Glibc。因此,如果终端出现以下错误:

checking the GLIBC_VERSION version... unsupported version 2.19
configure: error: Valgrind requires glibc version 2.2 - 2.14

接下来,您需要编辑2.19版本的配置文件,因为终端中报告该版本不受支持。

因此,在某个文本编辑器中打开名为valgrind目录下的configure文件,通过CTRL+F查找以下代码段:

case "${GLIBC_VERSION}" in 2.2)

当您在编辑器中到达该行时(行号始终可能会根据版本而变化),您会发现以下以2.2)开头的代码。

        2.2)
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: 2.15 family" >&5
$as_echo "2.15 family" >&6; }

$as_echo "#define GLIBC_2_14 1" >>confdefs.h

DEFAULT_SUPP="glibc-2.X.supp ${DEFAULT_SUPP}"
DEFAULT_SUPP="glibc-2.34567-NPTL-helgrind.supp ${DEFAULT_SUPP}"
DEFAULT_SUPP="glibc-2.X-drd.supp ${DEFAULT_SUPP}"
;;

当您向下滚动时,您会发现每个其他版本从2.2到2.21...都有相同的代码。将最新版本的代码复制并粘贴到上一个版本之后(请注意,只有在我的情况下,它是以2.2)版本开头的,您需要将所有这些2.2)更改为终端所需的版本,而在我的情况下是2.19)
因此,如果终端需要版本2.19,则您将添加的代码将如下所示:
     2.19)
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: 2.19 family" >&5
$as_echo "2.19 family" >&6; }

$as_echo "#define GLIBC_2_19 1" >>confdefs.h

DEFAULT_SUPP="glibc-2.X.supp ${DEFAULT_SUPP}"
DEFAULT_SUPP="glibc-2.34567-NPTL-helgrind.supp ${DEFAULT_SUPP}"
DEFAULT_SUPP="glibc-2.X-drd.supp ${DEFAULT_SUPP}"
;;

如果按照您的代码继续往下看,下一行应该是darwin)


那是我的错误:检查GLIBC_VERSION版本...不支持版本2.21 配置:错误:Valgrind需要glibc版本2.2-2.19 然后我按照您的指示操作,一切都很顺利。 - Dr. MAF

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接