воскресенье, 29 октября 2017
make - утилита для сборки проекта (пакета) с помощью Makefile
gmake - GNU версия make
читать дальшеremake - make с дополнительными возможностями отладки
Cmake - утилита, которая делает Makefile. Добавлена позже, чтобы типа упростить работу с make в больших проектах.
Qmake - утилита из набора Qt, генерирует Makefile (который потом, видимо, используется make)
autotools - система автосборки GNU (configure && make && make install) Включает в себя инструменты automake, autoconf и libtool
autoconf читает configure.ac делает configure.sh. configure.sh читает Makefile.in делает Makefile
automake читает Makefile.am делает Makefile.in
libtool
mk-configure
bmake - переносимая версия make из NetBSD. Имеет какие-то доп.фичи
install - копирует файлы и выставляет атрибуты и, если возможно, SID & GID
Что нужно знать про make
Быстрое введение
Implicit rules www.gnu.org/software/make/manual/html_node/Impl...
builtin rules www.gnu.org/software/make/manual/html_node/Cata...
Пространная инструкция rus-linux.net/nlib.php?name=/MyLDP/algol/gnu_ma...
mini HOWTO www.opennet.ru/base/dev/mini_make.txt.html
Эффективное использование www.opennet.ru/docs/RUS/gnumake/
А теперь немного дёгтя:
Чем плох GNU-make habrahabr.ru/post/138682/
все обсирают GNU-make и autotools, однако, идеальной системы для сборки, которая бы вот всех устроила, пока ещё никто не предложил. Везде есть какие-то "но". С другой стороны, афтары autotools, когда их писали, не думали, что в наши дни программы разрастутся до таких неебических размеров.
Главная либа с++ это libstdc++, но есть альтернатива: libc++ это менее полная версия стандартной либы.
С главной либой С всё сложнее - есть до жопы вариантов. Стандарт это libc
glibc - GNU-версия libc, используется в дистрах linux
uclibc - меньше размером, чем glibc. Ориентируется на встроенные системы.
musl libc - заново написанная версия libc под лицензией MIT, более строго следует стандартам POSIX
newlib - версия для встроенных систем, с упором на экономию памяти
libgcc - это ваще не то, это библиотека поддержки gcc для некоторых архитектур
eglibc = emdedded glibc - версия glibc для встроенных систем
bionic - версия libc, разработанная Google под свой Андроид. Распространяется под BSD-лицензией
dietlibc - переписана с нуля, распространяется под GNU GPLv2, делает упор на минимальный размер программ и памяти - включает в себя наиболее часто используемые функции libc. Для встроенных устройств.
Чувствую, список будет пополняться. en.wikipedia.org/wiki/Embedded_GLIBC
возможно, в исходниках на с вначале можно пейсать #!/usr/bin/gcc. Надо бы проверить.
Всё это поможет лучшему пониманию сборки LFS и компиляции пакетов из исходников. Вся эта тяга к знаниям инициирована именно сборкой LFS и компиляцией пакетов (из которой процесс сборки LFS состоит чуть менее, чем полностью).
Как это поможет мне в жизни? Хз, если честно.
@темы:
программирование,
LFS,
Linux