【问题标题】:compiling glibc from source with debug symbols使用调试符号从源代码编译 glibc
【发布时间】:2012-04-25 16:05:52
【问题描述】:

我需要使用调试符号从源代码编译 glibc。

  1. 我在哪里为此指定“-g”选项
  2. 我以后如何将示例代码链接到这个特定的 glibc 而不是我系统上安装的那个?

【问题讨论】:

  • 如果你不熟悉Glibc的编译,我会避免这样做。如果您只需要 glibc 的调试信息,请安装提供它的相应软件包,例如libc6-dbg 在 Debian 或 Ubuntu 上...
  • 那不会有帮助,因为我需要修改一些文件并检查它们是如何工作的。
  • 困难的部分是之后如何实际使用它:stackoverflow.com/questions/56810/… 祝你好运! :-)

标签: linux gcc compilation linker glibc


【解决方案1】:

我需要使用调试符号从源代码编译 glibc

如果没有调试符号,你将很难编译 glibc。默认的./configure && make 在编译行上有-g

我以后如何将示例代码链接到这个特定的 glibc 而不是安装在我系统上的那个?

这有点棘手,回答here

【讨论】:

  • -g 显然来自:sourceware.org/git/… in 2.21
  • 没有。至少不适用于编译包含动态链接器加载程序 (ld.so[.new]) 的文件。这是我为其中之一捕获的调用:gcc dl-reloc.c -c -std=gnu11 -fgnu89-inline -O2 -Wall -Wundef -Wwrite-strings -fmerge-all-constants -frounding-math -fstack-protector-strong -march=x86-64 -pipe -Wstrict-prototypes -Wold-style-definition -fno-stack-protector -DSTACK_PROTECTOR_LEVEL=0 -ftls-model=initial-exec -I…。在生成的可执行文件中有符号,但不是通过-g 获得的完整调试信息(可以很容易地通过dwarfdump 或仅通过它的大小看出)。
【解决方案2】:

这可能是configure 技巧的问题。首先,尝试configure --help,然后尝试configure --enable-debug,或者configure CC='gcc -g',甚至configure CFLAGS='-g'

对于您的示例代码,或许可以考虑玩LD_LIBRARY_PATHLD_PRELOAD 技巧(假设链接到动态库)。

但要非常小心,因为 Glibc 是 Gnu/Linux 类系统的基石。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-11-20
    • 2023-03-16
    • 2011-12-18
    • 2011-07-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多