【发布时间】:2012-03-11 00:05:01
【问题描述】:
我已经下载了 gdb-6.5.bz2.tar。解压此文件。 我写: LDFLAGS=-静态 ./配置
但结果我得到了一个 gdb,它需要一个 so 文件,例如:ncurses.so.5 libc.so.0 等
我如何静态构建?
【问题讨论】:
-
你可能做不到。如果您愿意,您将必须获得所有必备库的静态版本,这可能比您花更多的时间重新编译。为什么要构建静态链接的 GDB?动态链接的版本会简单很多。
-
@JonathanLeffler:如果你想调试一个新启动的系统,静态链接的 gdb 非常有价值。如果新系统将使用与您正在构建的原始系统不兼容的 ABI,则更是如此——例如,不同的 libc 或不同的默认调用约定。
-
@R..:很好,但是您需要为 GDB 链接的每个库获取或构建一个静态库。在 RHEL 5 系统上,这意味着:libreadline.so.5、libncurses.so.5、libm.so.6、libexpat.so.0、libdl.so.2、libc.so.6、/lib64/ld- linux-x86-64.so.2 如果
ldd /usr/bin/gdb的输出是可信的。我不确定您是否真的想用静态库替换所有这些,但这是gdb在这个(古董)平台上使用的共享库列表。 -
这只是 glibc、readline、ncurses 和 expat - 4 个库。 libdl、libc、ld-linux 和 libm 都是 glibc 的一部分。