Выбрать книгу по жанру
Фантастика и фэнтези
- Боевая фантастика
- Героическая фантастика
- Городское фэнтези
- Готический роман
- Детективная фантастика
- Ироническая фантастика
- Ироническое фэнтези
- Историческое фэнтези
- Киберпанк
- Космическая фантастика
- Космоопера
- ЛитРПГ
- Мистика
- Научная фантастика
- Ненаучная фантастика
- Попаданцы
- Постапокалипсис
- Сказочная фантастика
- Социально-философская фантастика
- Стимпанк
- Технофэнтези
- Ужасы и мистика
- Фантастика: прочее
- Фэнтези
- Эпическая фантастика
- Юмористическая фантастика
- Юмористическое фэнтези
- Альтернативная история
Детективы и триллеры
- Боевики
- Дамский детективный роман
- Иронические детективы
- Исторические детективы
- Классические детективы
- Криминальные детективы
- Крутой детектив
- Маньяки
- Медицинский триллер
- Политические детективы
- Полицейские детективы
- Прочие Детективы
- Триллеры
- Шпионские детективы
Проза
- Афоризмы
- Военная проза
- Историческая проза
- Классическая проза
- Контркультура
- Магический реализм
- Новелла
- Повесть
- Проза прочее
- Рассказ
- Роман
- Русская классическая проза
- Семейный роман/Семейная сага
- Сентиментальная проза
- Советская классическая проза
- Современная проза
- Эпистолярная проза
- Эссе, очерк, этюд, набросок
- Феерия
Любовные романы
- Исторические любовные романы
- Короткие любовные романы
- Любовно-фантастические романы
- Остросюжетные любовные романы
- Порно
- Прочие любовные романы
- Слеш
- Современные любовные романы
- Эротика
- Фемслеш
Приключения
- Вестерны
- Исторические приключения
- Морские приключения
- Приключения про индейцев
- Природа и животные
- Прочие приключения
- Путешествия и география
Детские
- Детская образовательная литература
- Детская проза
- Детская фантастика
- Детские остросюжетные
- Детские приключения
- Детские стихи
- Детский фольклор
- Книга-игра
- Прочая детская литература
- Сказки
Поэзия и драматургия
- Басни
- Верлибры
- Визуальная поэзия
- В стихах
- Драматургия
- Лирика
- Палиндромы
- Песенная поэзия
- Поэзия
- Экспериментальная поэзия
- Эпическая поэзия
Старинная литература
- Античная литература
- Древневосточная литература
- Древнерусская литература
- Европейская старинная литература
- Мифы. Легенды. Эпос
- Прочая старинная литература
Научно-образовательная
- Альтернативная медицина
- Астрономия и космос
- Биология
- Биофизика
- Биохимия
- Ботаника
- Ветеринария
- Военная история
- Геология и география
- Государство и право
- Детская психология
- Зоология
- Иностранные языки
- История
- Культурология
- Литературоведение
- Математика
- Медицина
- Обществознание
- Органическая химия
- Педагогика
- Политика
- Прочая научная литература
- Психология
- Психотерапия и консультирование
- Религиоведение
- Рефераты
- Секс и семейная психология
- Технические науки
- Учебники
- Физика
- Физическая химия
- Философия
- Химия
- Шпаргалки
- Экология
- Юриспруденция
- Языкознание
- Аналитическая химия
Компьютеры и интернет
- Базы данных
- Интернет
- Компьютерное «железо»
- ОС и сети
- Программирование
- Программное обеспечение
- Прочая компьютерная литература
Справочная литература
Документальная литература
- Биографии и мемуары
- Военная документалистика
- Искусство и Дизайн
- Критика
- Научпоп
- Прочая документальная литература
- Публицистика
Религия и духовность
- Астрология
- Индуизм
- Православие
- Протестантизм
- Прочая религиозная литература
- Религия
- Самосовершенствование
- Христианство
- Эзотерика
- Язычество
- Хиромантия
Юмор
Дом и семья
- Домашние животные
- Здоровье и красота
- Кулинария
- Прочее домоводство
- Развлечения
- Сад и огород
- Сделай сам
- Спорт
- Хобби и ремесла
- Эротика и секс
Деловая литература
- Банковское дело
- Внешнеэкономическая деятельность
- Деловая литература
- Делопроизводство
- Корпоративная культура
- Личные финансы
- Малый бизнес
- Маркетинг, PR, реклама
- О бизнесе популярно
- Поиск работы, карьера
- Торговля
- Управление, подбор персонала
- Ценные бумаги, инвестиции
- Экономика
Жанр не определен
Техника
Прочее
Драматургия
Фольклор
Военное дело
Внутреннее устройство Linux - Уорд Брайан - Страница 109
1. Распаковку архива с исходным кодом.
2. Конфигурирование пакета.
3. Запуск команды make для сборки команд.
4. Запуск команды make install или специфичной для данной версии ОС команды, которая устанавливает пакет.
примечание
Вы должны понимать основы, изложенные в главе 15, прежде чем продолжать чтение этой главы.
16.2. Распаковка архива с исходным кодом на языке C
Исходный код какого-либо пакета обычно предоставляется в виде файла .tar.gz, .tar.bz2 или .tar.xz, и вам следует распаковать этот файл, как описано в разделе 2.18. Однако перед распаковкой проверьте содержимое архива с помощью команд tar tvf или tar ztvf, поскольку некоторые пакеты не создают собственные подкаталоги в том каталоге, где вы распаковываете архив.
Отчет, подобный приводимому ниже, свидетельствует о том, что пакет в порядке и готов для распаковки:
package-1.23/Makefile.in
package-1.23/README
package-1.23/main.c
package-1.23/bar.c
—snip—
Тем не менее вы можете обнаружить, что не все файлы находятся внутри одного каталога (вроде каталога package-1.23 из приведенного примера):
Makefile
README
main.c
—snip—
Распаковка такого архива может создать большую путаницу в вашем текущем каталоге. Чтобы избежать этого, создайте новый каталог и перейдите в него перед извлечением содержимого архива. Наконец, остерегайтесь пакетов, которые содержат файлы с абсолютными путями, вроде таких:
/etc/passwd
/etc/inetd.conf
Возможно, вам не встретится ничего подобного, но если все-таки встретится — удалите такой архив из системы. Возможно, он содержит вирус-троян или какой-либо вредоносный код.
С чего начать. После извлечения содержимого архива с исходным кодом и появления множества файлов перед вами попытайтесь получить представление о пакете. В частности, поищите файлы README и INSTALL. Обязательно загляните в каждый файл README, поскольку они часто содержат описание пакета, краткое руководство, советы по установке и другую полезную информацию. Многие пакеты сопровождаются также файлами INSTALL, содержащими инструкции по компиляции и установке пакета. Особое внимание уделите специальным параметрам компилятора и определениям.
В дополнение к файлам README и INSTALL вы найдете другие файлы пакета, которые можно грубо распределить по трем категориям.
• Файлы, относящиеся к команде make, такие как Makefile, Makefile.in, configure и CMakeLists.txt. Очень старые пакеты содержат файл Makefile, который вам может понадобиться изменить, но большинство пакетов использует утилиту конфигурирования, например GNU Autoconf или CMake. Они поставляются с файлом сценария или конфигурации (такими как configure или CMakeLists.txt), чтобы помочь создать файл Makefile из файла Makefile.in, основываясь на настройках вашей системы и параметрах конфигурации.
• Файлы исходного кода, имена которых оканчиваются на .c, .h или .cc. Файлы исходного кода на языке C могут появиться практически всюду в каталоге пакета. У файлов исходного кода на языке C++ обычно есть суффиксы .cc, .C или .cxx.
• Объектные файлы, имена которых оканчиваются на .o, или двоичные файлы. Обычно объектные файлы отсутствуют в пакетах с исходным кодом, но вы можете встретить их в редких случаях, когда поставщику пакета не разрешено распространение исходного кода и вам необходимо предпринимать что-либо особое, чтобы использовать такие объектные файлы. В большинстве случаев наличие объектных (или двоичных исполняемых) файлов в пакете означает, что он был составлен не очень хорошо и вам следует запустить команду make clean, чтобы убедиться в пригодности кода для компиляции.
16.3. Утилита GNU Autoconf
Хотя исходный код на языке C обычно довольно хорошо портируется, различия между платформами делают невозможной компиляцию большинства пакетов с помощью единственной утилиты Makefile. Раньше для решения этой проблемы предлагались отдельные утилиты Makefile для каждой операционной системы или же утилита, которую легко изменять. При таком подходе приходилось задействовать сценарии, которые генерируют файлы Makefiles на основе анализа системы, использованной для сборки пакета.
Утилита GNU Autoconf является популярным средством для автоматического создания файла Makefile. Пакеты, которые используют эту систему, содержат файлы с именами configure, Makefile.in и config.h.in. Файлы с суффиксом .in являются шаблонами; идея состоит в том, чтобы запускать сценарий конфигурирования, который выявляет характеристики вашей системы, а затем выполняет подстановки в файлах .in для создания реальных файлов сборки. Для конечного пользователя это просто; чтобы создать файл Makefile из файла Makefile.in, запустите команду configure:
$ ./configure
Вы должны получить пространный диагностический вывод, пока сценарий проверяет вашу систему на соответствие необходимым условиям. Если все завершается удачно, команда configure создает один или несколько файлов Makefile и файл config.h, а также файл кэша (config.cache), чтобы ей не приходилось выполнять некоторые проверки заново.
Теперь можно запустить команду make для компиляции пакета. Успешное прохождение этапа с командой configure не обязательно означает, что этап make тоже будет пройден, но шансы на это весьма велики (см. раздел 16.6, чтобы разобраться с неудачными результатами конфигурирования и компиляции).
Получим некоторый опыт выполнения такого процесса.
примечание
Для этого вам требуется иметь все необходимые инструменты сборки, которые доступны в вашей системе. Для Debian и Ubuntu простейшим способом является установка пакета, существенного для сборки; для систем, подобных Fedora, воспользуйтесь утилитой groupinstall.
16.3.1. Пример работы утилиты Autoconf
Прежде чем обсуждать то, как вы можете изменить поведение утилиты Autoconf, посмотрим на простой пример, чтобы вы знали, чего ожидать. Вы будете устанавливать пакет GNU coreutils в ваш домашний каталог (для гарантии того, что он не смешается с вашей системой). Скачайте пакет с веб-страницы http://ftp.gnu.org/gnu/coreutils/ (обычно самой лучшей является последняя версия), распакуйте его, перейдите в распакованный каталог и выполните конфигурирование таким образом:
$ ./configure —prefix=$HOME/mycoreutils
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
—snip—
config.status: executing po-directories commands
config.status: creating po/POTFILES
config.status: creating po/Makefile
Теперь запустите команду make:
$ make
GEN lib/alloca.h
GEN lib/c++defs.h
—snip—
make[2]: Leaving directory '/home/juser/coreutils-8.22/gnulib-tests'
make[1]: Leaving directory '/home/juser/coreutils-8.22'
Далее попробуйте запустить один из исполняемых файлов, только что созданных вами, например ./src/ls, и попытайтесь выполнить команду make check, чтобы осуществить ряд проверок пакета. На это может потребоваться некоторое время, но наблюдать за проверкой интересно.
Наконец вы готовы к установке пакета. Выполните сначала пробный прогон с помощью команды make –n, чтобы увидеть то, что выполняет команда make install, но не устанавливая сам пакет:
$ make -n install
Просмотрите результат работы и, если не заметите никаких странностей (таких как установка в каталог, отличающийся от каталога mycoreutils), выполните реальную установку:
$ make install
Теперь в вашем домашнем каталоге должен появиться подкаталог с именем mycoreutils, содержащий подкаталоги bin, share и др. Попробуйте запустить некоторые команды из каталога bin (вы только что выполнили сборку многих основных инструментов, о которых узнали из главы 2). Наконец, поскольку вы настроили каталог mycoreutils так, чтобы он не зависел от остальной части системы, можно полностью удалить его, не опасаясь причинить вред системе.
- Предыдущая
- 109/114
- Следующая