我正在尝试下载 glibc 2.23 源代码并在我的 Ubuntu 系统上构建它们。 我需要从源代码构建该特定版本,以获得为我的研究定制的 glibc 修改版本,并且它将仅在使用加载程序环境变量(例如 LD_PREDLOAD 或 LD_LIBRARY_PATH)的我的研究应用程序中使用。
但是,当按如下方式构建它时,我得到了一个巨大的文件作为输出(libc.so 重量约为 11MB):
有没有办法减少构建的 libc.so 的大小?
附注
这是我的系统详细信息: Linux 版本 4.4.0-93-generic (buildd@lgw01-03) (gcc 版本 5.4.0 20160609 (Ubuntu 5.4.0-6ubuntu1~16.04.4) ) #116-Ubuntu SMP 8 月 11 日周五 21:17:51 UTC 2017
从源代码构建
glibc
可能是一个坏主意。请参阅this以及那里的一些评论。它的当前版本是 GNU libc 2.26...考虑升级整个 Ubuntu 发行版(Ubuntu 17.10 应该在几周内发布,即 2017 年 10 月末)
构建目录../configure --prefix=
是对
--prefix
在 autoconf-ed 软件中的作用的误解。它与软件的安装位置有关,而不是其构建目录。
(我不知道你的
--prefix
应该是什么,因为 libc
对你的系统来说 非常重要,也许应该是 --prefix=/
,但你应该仔细检查)
有什么办法可以减少构建的libc.so的大小吗?
您可能会(非常小心地)使用strip(1),但您可能会面临破坏系统的风险。
您可能不关心减小
libc
的大小,因为 Linux 系统上的几乎每个软件都使用(并且共享)它!
顺便说一句,也请考虑musl-libc。它可以与 GNU glibc 很好地共存,并且实际上仅由使用
musl-gcc
(由它提供)构建的程序使用。
如果您正在做一些研究,那么在 chroot(2)-ed 环境中工作是合理的。 另请参阅schroot。您可以在
make install DESTDIR=/tmp/instmylibc
的帮助下安装,然后适当地复制 /tmp/instmylibc
。阅读 更多关于 autoconf
PS。在进行此类危险的实验之前,请务必至少备份您的重要数据。我认为您的
libc.so
的大小不应该是一个重大问题。但您需要使用 chroot
,也许在安装 chroot
ed 环境期间需要借助 debootstrap。