Библиотека сайта rus-linux.net
Введение |
||
---|---|---|
Глава 12. Сборка и установка свободного програмного обеспечения |
Введение
Разница между свободным и собственническим (проприетарным) программным обеспечением заключается в доступности его исходного кода[30]. Это означает, что свободное ПО поставляется в виде архивов с файлами исходного кода. Это может быть непривычным для новичков, потому как пользователи свободного ПО должны сами откомпилировать исходный код прежде, чем они смогут пользоваться программой.
Большинство свободного программного обеспечения существует в откомпилированном виде. Поэтому устанавливать эти предварительно откомпилированные бинарные файлы следует только, если вы очень спешите. В таком виде не распространяется некоторое свободное ПО или его более ранние версии. Кроме того, если вы используете экзотическую операционную систему или экзотическую архитектуру, много откомпилированных для вас программ будет отсутствовать. Более того, самостоятельная компиляция ПО позволит вам включить только нужные опции или расширить функциональность программы, чтобы максимально удовлетворить ваши потребности.
Требования
Для сборки ПО вам понадобится:
- компьютер с работающей операционной системой,
- базовые знания по используемой вами операционной системе,
- некоторый объём свободного дискового пространства,
- компилятор
(обычно для языка программирования
C
) и архиватор (tar), - некоторое количество еды (в тяжелых случаях процесс может занять много времени). Настоящие хакеры едят пиццу, а не quiche (французский пирог с заварным кремом и различной начинкой).
- запить что-нибудь (по тем же соображениям). Настоящие хакеры пьют газировку с кофеином.
- телефонный номер вашего друга, который перекомпилирует своё ядро каждую неделю,
- терпение и ещё раз терпение!
Компиляция из исходных кодов как правило не вызывает много проблем, но если вы не изучали этого ранее, малейшая загвоздка может отпугнуть вас.
Компиляция
Принципы
Чтобы
преобразовать исходный код в бинарный файл, должна быть выполнена
компиляция
(обычно из исходных кодов на C
или C++
,
являющихсянаиболее распространёнными языками из тех, что используются
в сообществе свободного ПО). Некоторые свободные программы написаны
на языках, не требующих компиляции (например, на perl или shell
),
но для них всё-таки требуется некоторая настройка.
Компиляция
кода на C
по логике вещей выполняется при помощи компилятора C
,
обычно gcc
- свободного компилятор, написанного проектом
GNU. Компилирование всего программного пакета -сложная задача,
выполняемая путём успешных компиляций различных исходных файлов (по
многим причинам программисту проще поместить разные части своей
работы в отдельные файлы). Чтобы упростить это для вас этими
повторяющимися операциями руководит утилитапод названием make.
Четыре этапа компиляции
Чтобы
понять, как происходит компиляция (для решения возможных проблем), вы
должны знать о её четырёх этапах. Задание заключается в постепенном
преобразовании текстового файла, написанного на понятном для
квалифицированного человека языке (т.е.на языке C
),
в язык, понятный для машины (или, в некоторых случаях, для
чрезвычайно
квалифицированного человека). gcc
одну за другой выполняет четыре программы, каждая из которых делает
один этап:
- cpp:
Первый этап заключается в замене директив (препроцессоры)
чистыми инструкциями
C
. Обычно это означает вставку заголовка (#include
) или определение макрокоманд (#define
). В конце этого этапа генерируется чистый кодC
. - cc1:
Этот этап заключается в преобразовании кода
C
в код языка ассемблера. Сгенерированный код зависит от архитектуры, для которой он предназначен. - as:
Этот этап заключается в генерации объектного
кода (или бинарного
кода) из кода на языке ассемблера. В конце этого этапа генерируется
файл с расширением
.o
. - ld:
На последнем этапе (компоновке)
устанавливаются связи между всеми объектными файлами (
.o
) и их библиотеками и результатеполучается исполняемый файл.
Структура дистрибутива
Правильно организованный дистрибутив свободного ПО всегда имеет одинаковую структуру:
- Файл
INSTALL
, описывающий процедуру установки. - Файл
README
, содержащий общую информацию, имеющую отношение к программе (короткое описание; имя автора; URL, с которого её можно загрузить; связанную с ней документацию; полезные ссылки и т.п.). Если файлINSTALL
отсутствует, то обычно в файлеREADME
находится краткая инструкция по установке. - Файл
COPYING
, содержащий лицензию или описывающий условия распространения ПО. Иногда вместо него для этих целей используется файлLICENSE
с таким же содержимым. - Файл
CONTRIB
или файлCREDITS
, содержащий список людей, имеющих отношение к этому программному продукту (активное участие, дельные комментарии и т.д.). - Файл
CHANGES
(режеNEWS
), содержащий последние изменения и исправления ошибок. -
Файл
Makefile
(см. раздел «Make»), управляющий компиляцией программы (нужен для make). Если этот файл изначально не существует, то он создcтся процессом конфигурирования перед компиляцией. - Довольно
часто файл
configure
илиImakefile
, позволяющий сгенерировать новый файлMakefile
, настроенный для конкретной системы (см. «Конфигурирование»). - Каталог,
содержащий исходные коды, и в котором обычно сохраняется бинарный
файл после завершения компиляции. Обычно он называется
src
. - Каталог,
содержащий документацию к программе (обычно в формате man
или
Texinfo
), с именемdoc
. - Иногда каталог, содержащий специфические для программы данные (обычно файлы настройки, примеры получаемых данных или файлы ресурсов).
[30] Это не совсем верно, т.к. некоторые собственнические программытакже поставляется с исходными кодами. Но в отличие от свободного ПО конечному пользователю не разрешается использовать или изменять код по своему желанию.
Глава 12. Сборка и установка свободного програмного обеспечения |
Распаковка |