linux - 如何构建体积更小的 glibc?

标签 linux ubuntu shared-libraries glibc lib

我正在尝试下载 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

谢谢:)

最佳答案

从源代码构建glibc 可能不是一个好主意。参见 this以及那里的一些评论。它的当前版本是 GNU libc 2.26 ...考虑升级整个 Ubuntu 发行版(Ubuntu 17.10 应该在几周内发布,即 2017 年 10 月末)

../configure --prefix= build-dir

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

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

Is there any way to reduce the size of the built libc.so?

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

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

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

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

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

关于linux - 如何构建体积更小的 glibc?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46521670/

相关文章:

linux - 将十六进制转储转换回其原始二进制形式

c - 如何删除文本文件中的换行符

ubuntu - 从 Ubuntu 卸载应用程序时如何修复错误 "incorrect permissions on/usr/lib/policykit-1"?

linux - linux中shm.c的修改

linux - 从 makefile 执行复杂的 shell 命令

ruby-on-rails - RubyMine 错误

php - 使用 RSVG 作为默认委托(delegate) ImageMagick Ubuntu 16.04

c - 处理共享对象中的全局变量

autotools - 如何编译具有静态链接依赖项的自动工具项目?

linux - bash:使用(( "$var"== "string"))进行比较的语法错误