【问题标题】:Error while building glibc构建 glibc 时出错
【发布时间】:2012-04-08 20:36:41
【问题描述】:

我正在尝试安装 glibc 来调试我正在开发的 C 框架。但是,我在构建过程中遇到了错误。这是错误消息:

make[3]: Leaving directory `/root/glibc-source/glibc-2.14/elf'
/usr/bin/install -c /root/glibc-2.14-build/elf/ld.so /usr/local/myglibc/lib/ld-2.14.so.new
mv -f /usr/local/myglibc/lib/ld-2.14.so.new /usr/local/myglibc/lib/ld-2.14.so
/usr/bin/install -c /root/glibc-2.14-build/libc.so /usr/local/myglibc/lib/libc-2.14.so.new
mv -f /usr/local/myglibc/lib/libc-2.14.so.new /usr/local/myglibc/lib/libc-2.14.so
echo ld-2.14.so /usr/local/myglibc/lib/ld-linux-x86-64.so.2 >> /root/glibc-2.14-build/elf/symlink.list
/usr/bin/install -c /root/glibc-2.14-build/elf/sotruss-lib.so /usr/local/myglibc/lib/audit/sotruss-lib.so.new
mv -f /usr/local/myglibc/lib/audit/sotruss-lib.so.new /usr/local/myglibc/lib/audit/sotruss-lib.so
make[2]: *** No rule to make target `/root/glibc-2.14-build/dlfcn/libdl.so.2', needed by `/root/glibc-2.14-build/elf/sprof'.  Stop.
make[2]: Leaving directory `/root/glibc-source/glibc-2.14/elf'
make[1]: *** [elf/subdir_install] Error 2
make[1]: Leaving directory `/root/glibc-source/glibc-2.14'
make: *** [install] Error 2

这是一个已知问题吗? 上周早些时候,我在同一台机器上构建了 glibc,没有任何错误。我正在重建它,因为 glibc 默认使用优化级别 2(-O2) 编译,并且我无法从代码转储中查看库函数中的一些变量的值,因为它们已被优化。我目前正在尝试使用优化级别 1 进行编译。

谢谢

【问题讨论】:

    标签: linux debugging gcc glibc


    【解决方案1】:

    看起来您正在尝试make install,而没有先成功地执行make all

    【讨论】:

    • 感谢您的回复。我在 make all 之后再次尝试,这次 make install 通过了。我总是在运行配置后立即进行安装。你能解释一下 make all 的重要性吗?
    • @AnlKumr make all 通常会编译所有内容,并且不能保证make install 将依赖于所有内容的构建。以后建议使用./configure && make all && make install,避免此类意外。
    • @HonkyTonk 是的,我很惊讶make install 中没有对这个特定文件的依赖。更奇怪的是,它之前在没有make all 的情况下也能工作一次。怎么可能突然在同一环境的同一台机器上产生新的依赖。我知道这里可能有很多隐藏的因素,但它们是什么?
    【解决方案2】:

    这是为了任何可能试图在他们的 ubuntu 机器上构建 glibc 的人的利益。 我经历了以下问题并通过以下方式解决了它们。

    这些问题在ubuntu 12.04遇到过

    • 我在与 glib-VERSION 相同的级别上创建了一个目录 glib-build 并运行以下命令

    $> ../glibc-2.16.0/configure --prefix=/home/gugovind/tsapp/glibc/glibc-build/

    这给了我 makeinfo 丢失的以下错误。

    为此

    $>sudo apt-get install texinfo

    会解决问题。

    • 关于 LD_LIBRARY_PATH 具有当前目录(即使它不存在)抛出错误 为此在您的命令提示符下运行以下命令

      $>设置 LD_LIBRARY_PATH

    这将暂时清除该控制台的 LD_LIBRARY_PATH。然后再次运行配置。

    您可能会遇到配置的另一个问题.. “从未定义函数 strtonum”

    查看 config.log 文件,它可能缺少 mawk 或 gawk。使用

    安装它们

    sudo apt-get install gawk

    这应该可以帮助您完成配置部分。

    现在运行

    全部搞定

    如果您遇到未编译的特定文件..只需在此之前复制 gcc ... 并在您将 cd 复制到该目录后再次将其粘贴到命令提示符中(错误之前的命令行应该告诉您在哪里去。)

    进行安装

    您可能会收到关于找不到 etc/ld.config... 文件的警告。忽略那个。。 现在一切就绪。

    【讨论】:

      猜你喜欢
      • 2019-03-17
      • 2012-08-04
      • 2014-09-30
      • 2019-11-16
      • 2019-08-03
      • 1970-01-01
      • 2017-12-25
      • 2011-07-12
      • 1970-01-01
      相关资源
      最近更新 更多