如何获取Ubuntu使用的eglibc源代码?

如何获取Ubuntu使用的eglibc源代码?

我如何以允许使用 gdb 逐步浏览源代码的格式获取 eglibc 的源代码?

我尝试使用apt-get source libc6-dev并获取源代码,但我认为由于未应用预处理器指令,gdb 的行号与我下载的源代码不匹配。这使得它在尝试逐步查看源代码并查看 libc 中的函数如何工作时不太有用。

答案1

如果您真的想逐步了解源代码,我建议您构建一个不带优化且不剥离二进制文件的 libc。

幸运的是,这应该很容易 - 因为您已经获得了源代码,所以您可以从中构建软件包。您需要确保DEB_BUILD_OPTIONSevnironment 变量包含noopt获取-O0二进制文件并nostrip保留调试符号,然后使用以下命令正常构建debuild

sudo apt-get build-dep libc6
DEB_BUILD_OPTIONS="noopt nostrip" debuild -us -uc

将为您构建带有-O0和不带有调试符号的软件包;然后您可以使用它们进行安装,dpkg然后 gdb 将拾取调试符号。作为额外的好处,gdb 还会知道在哪里找到源文件,因此您将获得源列表。

由于我们没有更改软件包的版本,下次运行升级时,apt 将用存档版本替换这些本地安装的软件包。

答案2

您可以尝试 apt-get source -d libc6-dev,这将为您提供 deb 格式的源代码和差异。然后您可以解压缩它,它应该会提供 tar.gz 中的源代码,并将其解压缩。它应该存储在您运行 apt-get 命令的目录中。

相关内容