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,因为我正在经历 Learn C the Hard Way。在我遇到这个问题后,我求助于 apt-get 看看它是否可以工作。它为我安装了这个包:

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

5 回答 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 文件中,我还添加了 777 附近的代码,但我认为这对最终结果并不重要,如果我基本上只是复制了之前引用 2.14 的内容,粘贴并将其全部更改为 2.15

希望这可以帮助

于 2012-05-13T03:20:20.887 回答
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 上测试

于 2014-04-23T18:11:10.763 回答
9

我该如何处理?

两种方式之一:

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

我必须降级glibc吗?

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

于 2012-05-10T05:50:40.227 回答
3

更新了 valgrind-3.8.1(这应该适用于任何准当前的 Linux 机器——在 Slackware 14.0 上测试过):

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

像魅力一样工作!感谢大佬们的帮助!

干杯!

- 在

于 2013-06-05T02:55:49.917 回答
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)为终端所需的版本,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)在下一行。

于 2015-08-23T15:38:02.637 回答