如何获取Ubuntu使用的eglibc源代码?
如何以允许使用gdb单步执行源代码的格式获取eglibc的源代码?
我已经尝试使用apt-get source libc6-dev
并且它可以用于获取源代码,但我认为由于未应用预处理器指令,因此gdb所具有的行号与我下载的源不匹配。 这使得在尝试单步执行源代码并查看libc中的函数如何工作时不太有用。
如果你真的想要逐步完成源代码,我建议你在没有优化的情况下构建一个libc,而不需要剥离二进制文件。
幸运的是,这应该很容易 – 因为你已经有了源代码,你可以从中构建软件包。 你需要确保DEB_BUILD_OPTIONS
evnironment变量包含noopt
来获取-O0
二进制文件和nostrip
来保存调试符号,然后使用debuild
正常debuild
:
sudo apt-get build-dep libc6 DEB_BUILD_OPTIONS="noopt nostrip" debuild -us -uc
将构建使用-O0
构建的软件包,并且不会删除调试符号; 然后你可以用dpkg
安装它们,gdb将获取调试符号。 作为额外的奖励,gdb还将知道在哪里可以找到源文件,因此您将获得源列表。
由于我们尚未更改软件包的版本,因此下次运行升级时,apt将使用归档版本替换这些本地安装的软件包。
你可以试试apt-get source -d libc6-dev,这应该给你deb格式的源和差异。 然后你可以解压缩它,它应该给tar.gz中的源代码解压缩它。它应该存储在你运行apt-get命令的目录中。