【问题标题】:How to build glibc with reduced size?如何构建减小尺寸的 glibc?
【发布时间】:2018-03-13 07:08:45
【问题描述】:

我正在尝试下载 glibc 2.23 源并在我的 Ubuntu 系统上构建它们。 我需要从源代码构建该特定版本,以获得针对我的研究定制的 glibc 修改版本,并且它只会在我的研究应用程序中使用加载器环境变量(例如,LD_PREDLOAD 或 LD_LIBRARY_PATH)。

但是,在构建它时,我得到了一个巨大的文件作为输出(libc.so 的重量约为 11MB):

  • 将源下载到某个本地目录(比如 /tmp/glibc/)
  • 为构建结果创建新目录 (/tmp/glibc/build)
  • 从构建目录运行配置:
  • $ ../configure --prefix= 因此,构建过程将在 build-dir 下生成大小为 11MB 的 libc.so 文件。

有没有办法减少构建的 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 Fri Aug 11 21:17:51 UTC 2017

谢谢:)

【问题讨论】:

  • 为什么你想从源代码构建 GNU libc,你为什么要构建它这么旧的版本?您应该编辑您的问题以改进它并激发它。
  • 我需要从源代码构建它以根据我的需要自定义 libc 分配器(对于我正在做的研究),并且构建的 libc 不会用作我系统中的默认 libc(因此,我将其安装在某个本地 build-dir 文件夹中,以便稍后在我的研究应用程序上使用)
  • 这应该出现在您的问题中,而不是在评论中

标签: linux ubuntu shared-libraries glibc lib


【解决方案1】:

从源代码构建glibc 可能是个坏主意。请参阅this 和那里的一些 cmets。它的当前版本是GNU libc 2.26...考虑升级整个 Ubuntu 发行版(Ubuntu 17.10 应该在几周内发布,2017 年 10 月结束)

../configure --prefix=构建目录

是对--prefixautoconf-ed软件中的作用的误解。它与软件的安装位置有关,与其构建目录无关。

(我不知道你的--prefix到底应该是什么,因为libc对你的系统来说是如此重要,也许它应该是--prefix=/,但你应该仔细检查)

有什么办法可以减小构建的 libc.so 的大小?

您可以使用(非常小心)strip(1),但您可能会破坏您的系统。

而且您可能并不关心减小 libc 的大小,因为 Linux 系统上的几乎所有软件(和 shared)都在使用它!

顺便说一句,也可以考虑musl-libc。它可以与 GNU glibc 很好地共存,并且在实践中仅由使用 musl-gcc(由它提供)构建的程序使用。

如果您正在做一些研究,在chroot(2)-ed 环境中工作是合理的。另见schroot。您可以在make install DESTDIR=/tmp/instmylibc 的帮助下安装,然后适当地复制/tmp/instmylibc。阅读more about autoconf

附言。在进行此类危险实验之前,请务必至少备份您的重要数据。我不认为你的libc.so 的大小应该是一个重要的问题。但是你需要使用chroot,也许在安装chrooted 环境的过程中需要debootstrap 的帮助。

【讨论】:

  • 感谢@Basile 的回答。正如我上面提到的,我需要为研究目的构建定制的库。那么,这是否意味着我系统上安装的默认 glibc(重约 1.8MB)被剥离了?
猜你喜欢
  • 2011-12-26
  • 1970-01-01
  • 2021-08-10
  • 1970-01-01
  • 2018-03-04
  • 2021-11-25
  • 2012-10-05
  • 2018-01-30
  • 2012-04-22
相关资源
最近更新 更多