Как собрать glibc с уменьшенным размером?

Я пытаюсь загрузить исходники glibc 2.23 и собрать их в своей системе Ubuntu. Мне нужно собрать эту конкретную версию из источников для получения модифицированной версии glibc, настроенной для моего исследования, и она будет использоваться только в моих исследовательских приложениях с использованием переменных среды загрузчика (например, LD_PREDLOAD или LD_LIBRARY_PATH).

Но при сборке, как показано ниже, я получил на выходе огромный файл (libc.so весит около 11 МБ):

  • загрузите исходники в какой-нибудь локальный каталог (скажем, / tmp / glibc /)
  • создать новый каталог для результатов сборки (/ tmp / glibc / build)
  • запустите configure из каталога сборки:
  • ‹Build-dir> $ ../configure --prefix =‹ build-dir> В результате процесс сборки создаст файл libc.so в каталоге build-dir размером 11 МБ.

Есть ли способ уменьшить размер встроенного libc.so?

p.s.

Вот сведения о моей системе: 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 Пт, 11 августа 21:17:51 UTC 2017

Спасибо :)


person Mohammad Agbarya    schedule 02.10.2017    source источник
comment
Почему вы хотите собрать GNU libc из исходных текстов и почему вы хотите собрать такую ​​старую версию? Вам следует отредактировать свой вопрос, чтобы улучшить его и мотивировать.   -  person Basile Starynkevitch    schedule 02.10.2017
comment
Мне нужно собрать его из источника для настройки распределителя libc для моих нужд (для исследования, которое я делаю), и встроенный libc не будет использоваться в качестве libc по умолчанию в моей системе (поэтому я установил его в некотором локальном каталоге сборки папка, которая будет использоваться позже только в моих исследовательских приложениях)   -  person Mohammad Agbarya    schedule 03.10.2017
comment
Это должно быть в вашем вопросе, а не в комментарии   -  person Basile Starynkevitch    schedule 03.10.2017


Ответы (1)


Сборка glibc из исходников может быть плохой идеей. См. это и некоторые комментарии там. Его текущая версия - GNU libc 2.26 ... Рассмотрим вместо этого обновление всего вашего дистрибутива Ubuntu (Ubuntu 17.10 должен быть выпущен через несколько недель, в конце октября 2017 года)

../configure --prefix= каталог сборки

является неправильным пониманием роли --prefix в программном обеспечении, созданном с помощью autoconf. Это относится к месту установки программного обеспечения, а не к его каталогу сборки.

(и я точно не знаю, каким должен быть ваш --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, возможно, с помощью debootstrap во время установки среды chrooted.

person Basile Starynkevitch    schedule 02.10.2017
comment
Спасибо @Basile за ваш ответ. Как я уже упоминал выше, мне нужно создавать собственные библиотеки для исследовательских целей. Итак, означает ли это, что установленный в моей системе glibc по умолчанию (который весит около 1,8 МБ) удален? - person Mohammad Agbarya; 03.10.2017