valgrind不接受最新版本的glibc

时间:2012-05-09 15:01:18

标签: valgrind

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,因为我正在通过Learn C the Hard Way。在我遇到这个问题后,我使用apt-get来查看它是否可行。它为我安装了这个包:

libc6-dbg - Embedded GNU C Library: detached debugging symbols

5 个答案:

答案 0 :(得分:18)

我也经历过这本书并遇到了这个问题。我用谷歌搜索了它,然后按照雇员俄罗斯的建议结束了这里,我进入并使用配置文件并使其工作。

进入你的配置约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文件中我还添加了大约777的代码,但我不认为它对最终结果很重要,如果是的话虽然我基本上只是复制了之前引用2.14的东西,粘贴并将其全部更改为2.15 < / p>

希望这有帮助

答案 1 :(得分: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上测试

答案 2 :(得分:9)

  

我该如何处理?

两种方式之一:

  1. 使用您的发行版并下载他们已经为您构建的软件包,或
  2. 找出问题(在configure添加到2.15之后configure.in尚未重新生成{{1}}并修复它。
  3.   

    我必须降级glibc吗?

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

答案 3 :(得分:3)

为valgrind-3.8.1刷新(这应该适用于任何准当前的Linux机箱 - 在Slackware 14.0上测试):

在“2.16”和“2.16”之间增加了一个“2.17”选项(约为6607行)。 “valgrind-3.8.1 / configure”文件中“darwin”的开头。

像魅力一样工作!谢谢你们的帮助!

干杯!

- 在

答案 4 :(得分: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}"
;;

如果向下滚动,则会为每个其他版本from 2.2 to 2.21...找到相同的代码。复制并粘贴上一版本之后的最新版本代码(请注意,仅在我的情况下为2.2版本,以2.2)开头,您需要更改所有2.2)&#39 ; s到终端所需的版本,在我的情况下为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)