Gerard Beekmans - Linux From Scratch
- Название:Linux From Scratch
- Автор:
- Жанр:
- Издательство:неизвестно
- Год:неизвестен
- ISBN:нет данных
- Рейтинг:
- Избранное:Добавить в избранное
-
Отзывы:
-
Ваша оценка:
Gerard Beekmans - Linux From Scratch краткое содержание
Gerard Beekmans
Copyright © 1999-2002 by Gerard Beekmans
Перевод: Денис Каледин, Ник Фролов, Алекс Казанков.
Версия 4.0
Эта книга описывает процесс создания Linux системы с нуля, используя лишь исходные коды необходимого программного обеспечения.
Linux From Scratch - читать онлайн бесплатно полную версию (весь текст целиком)
Интервал:
Закладка:
Установка Glibc-2.2.5
Приблизительное время компиляции: 14.71 SBU Необходимое дисковое пространство: 369 MB
Инсталляция Glibc
Перед установкой пакета примените патч. Удостоверьтесь, что патч и пакет распакованы перед инсталляцией.
Перед выполнением инсталляционных инструкций войдите в каталог glibc-2.2.5 и распакуйте архив glibc-linuxthreads в каталоге glibc-2.2.5, а не в /usr/src.
Этот пакет известен своим нестабильным поведением при компиляции с измененными опциями оптимизации (включая опции -march и -mcpu). Glibc рекомендуется компилировать с настройками по умолчанию. Следовательно, если вы задали переменные такие как CFLAGS или CXXFLAGS, изменяющие уровень оптимизации по умолчанию, рекомендуется убрать их при сборке пакета Glibc. Изменяя оптимизации для Glibc, вы действуете на свой страх и риск.
Также не стоит запускать скрипт configure с опцией –enable-kernel. Это может вызвать ошибки сегментации при ссылке на него пакетов вроде fileutils, make и tar.
Вообще, чтобы не рисковать, рекомендуем компилировать Glibc в точности как указано в этом разделе.
Для инсталляции Glibc выполните:
patch -Np1 -i ../glibc-2.2.5-2.patch && touch /etc/ld.so.conf && mkdir ../glibc-build && cd ../glibc-build && ../glibc-2.2.5/configure –prefix=/usr –disable-profile \ –enable-add-ons –libexecdir=/usr/bin && echo «cross-compiling = no» > configparms && make && make install && make localedata/install-locales && exec /static/bin/bash –login
Вместо выполнения make localedata/install-localesможно установить только те локали, которые вам необходимы с помощью команды localedef. Более подробную информацию можно найти в файле INSTALL в директории glibc-2.2.5. Не забудьте создать директорию /usr/lib/local, т.к. localedefпредполагает ее наличие.
На данном этапе мы не будем инсталлировать страницы руководства потоков (The Linux Threads man pages), т.к. они требуют функционирующего пакета Perl. Мы вернемся к их инсталляции после установки Perl.
Во время стадии configure на экран будет выведено следующее предупреждение:
configure: warning: *** These auxiliary programs are missing or too old: msgfmt *** some features will be disabled. *** Check the INSTALL file for required versions.
Отсутствие файла msgfmt (из пакета gettext, который мы установим позже в данной главе) не вызовет никаких проблем. Файл msgfmt используется для генерирования бинарных файлов перевода, которые позволяют системе общаться на другом языке. Так как эти файлы перевода уже сгенерированы, в использовании msgfmt нет необходимости. Нам понадобился бы msgfmt лишь в том случае, если мы изменили исходники файлов перевода (файлы *.po в подкаталоге po), т.к. нам пришлось бы заново генерировать бинарные файлы.
Пояснения команд
patch -Np1 -i ../glibc-2.2.5-2.patch:Этот патч переводит все упоминания о $(PERL) на /usr/bin/perl в файле malloc/Makefile. Это необходимо, т.к. Glibc не может определить местонахождение программ Perl, так как пакет Perl еще не был установлен. Данный патч также заменяет все упоминания о root на 0 в файле login/Makefile. Это необходимо, потому что сам пакет Glibc еще не установлен, и выявление идентификационного номера пользователя из имени пользователя невозможно. К примеру, команда chown root fileне будет работать, в то время как при замене имени пользователя на userid, программа будет выполнена.
Данный патч также устраняет некоторые другие ошибки, например, «errlist», «dns resolver», «xdr_array», «calloc», «thread exit», «udivdi3», «math test», «restrict_arr» и «divbyzero». Для получения более подробной информации, см. http://www.zipworld.com.au/~gschafer/lfs-tweaks.html.
touch /etc/ld.so.conf:Один из заключительных шагов установки Glibc installation – выполнение команды ldconfig для обновления динамического кэша загрузки. Если этот файл не существует, инсталляция завершится с ошибкой, что не может прочесть файл. Для избегания подобной ошибки, мы просто создаем пустой файл (в случае пустого файла, Glibc будет по умолчанию использовать каталоги /lib и /usr/lib).
–disable-profile:Отменяет компиляцию библиотек с профильной информацией. Если вы собираетесь использовать профили, пропустите эту опцию.
–enable-add-ons:Включает дополнительные модули, в нашем случае linuxthreads.
–libexecdir=/usr/bin:Инсталлирует программу pt_chown в каталог /usr/bin.
echo «cross-compiling = no» > configparms:Этой командой мы даем понять, что компилируем пакет только для нашей системы. Кросс-компиляция используется, например, для того, чтобы скомпилировать пакет для системы Apple Power PC на Intel-совместимом компьютере. Glibc по умолчанию полагает, что мы кросс-компилируем, потому что не может скомпилировать тестовую программу для проверки, т.к. сам пакет Glibc еще не установлен.
exec /static/bin/bash –login:Данная программа запустит новый сеанс оболочки bash вместо текущего. Мы, таким образом, избавимся от приглашения «I have no name!» командной строки, которое было вызвано невозможностью bash получить имя пользователя из userid (из-за отсутствия Glibc).
Содержимое Glibc
Последняя проверка: версия 2.2.5.
Программы
catchsegv, gencat, getconf, getent, glibcbug, iconv, iconvconfig, ldconfig, ldd, lddlibc4, locale, localedef, mtrace, nscd, nscd_nischeck, pcprofiledump, pt_chown, rpcgen, rpcinfo, sln, sprof, tzselect, xtrace, zdump и zic
Описания
catchsegv
catchsegv может быть использования для слежения за состоянием стека, когда выполнение программы прерывается из-за ошибки распределения памяти.
gencat
gencat генерирует каталоги сообщений.
getconf
getconf отображает значения переменных, зависящих от системной конфигурации.
getent
getent позволяет получить записи административной базы данных.
glibcbug
glibcbug создает сообщение об ошибке в glibc и отправляет по указанному адресу сообщения об ошибках.
iconv
iconv осуществляет преобразование наборов символов.
iconvconfig
iconvconfig создает конфигурационные файлы для модулей iconv.
ldconfig
ldconfig настраивает привязки времени исполнения динамического линкера.
ldd
ldd выводит список разделяемых библиотек, необходимых заданным программам.
lddlibc4
lddlibc4 используется ldd при работе с объектными файлами.
locale
locale – скрипт на Perl, разрешающий (или запрещающий) компилятору использование локалей POSIX для встроенных операций.
localedef
localedef компилирует спецификации локалей.
mtrace
mtrace выводит путь multicast от источника к получателю (запрос IP trace).
nscd
nscd – демон, предоставляющий кэш для большинства запросов DNS.
nscd_nischeck
nscd_nischeck проверяет нужен или нет защищенный режим для запроса NIS+.
pcprofiledump
pcprofiledump выводит информацию, полученной из профиля PC.
pt_chown
pt_chown устанавливает владельца, группу и права доступа подчиненного псевдотерминала в соответствии с основным псевдотерминалом, переданном в описании `3'. Это вспомогательная программа для функции `grantpt'. Не предназначается для прямого запуска из командной строки.
rpcgen
rpcgen генерирует код C для реализации протокола RPC.
rpcinfo
rpcinfo делает запрос RPC к серверу.
sln
sln символически связывает dest и source. Программа собрана статически. Использование sln полезно для создания символических ссылок на динамические библиотеки, если система динамического связывания по какой-то причине нефункциональна.
Читать дальшеИнтервал:
Закладка: