Факт создания авторами исходных кодов представляет собой чисто технический интерес для портирования программ. Свободное программное обеспечение, разработанное для UNIX®-систем, может быть использовано во всех существующих системах UNIX® (как свободных, так и собственнических) с незначительными изменениями или вообще без изменений. Для этого требуется сконфигурировать ПО непосредственно перед его компиляцией.
Существует несколько систем конфигурирования. Вы должны использовать ту, которую требует автор программного обеспечения (а иногда и несколько). Обычно вы можете:
Использовать AutoConf (см. раздел «Autoconf»), если в родительском каталоге дистрибутива имеется файл с именем configure.
Использовать imake (см. раздел «Imake»), если в родительском каталоге дистрибутива имеется файл с именем Imakefile.
Запустить shell-скрипт (например, install.sh) согласно содержимому файла INSTALL (или файла README).
Программа AutoConf используется для корректной настройки ПО. Она создcт необходимые для компиляции файлы (например, Makefile) и иногда изменяет непосредственно сами исходные тексты (например, при помощи файла config.h.in).
Разработчик ПО знает, какие проверки необходимы для настройки его программы (например: «какую версию этой библиотеки вы используете?»). Он записывает их в файл с именем configure.in, используя определённый синтаксис.
Он запускает AutoConf, которая создcт из файла configure.in конфигурационный скрипт с именем configure. Этот скрипт выполняет тесты, необходимые при настройке программы.
Конечный пользователь запускает скрипт и AutoConf настраивает всё, что необходимо для компиляции.
Пример использования AutoConf:
$ ./configure loading cache ./config.cache checking for gcc... gcc checking whether the C compiler (gcc ) works... yes checking whether the C compiler (gcc ) is a cross-compiler... no checking whether we are using GNU C... yes checking whether gcc accepts -g... yes checking for main in -lX11... yes checking for main in -lXpm... yes checking for main in -lguile... yes checking for main in -lm... yes checking for main in -lncurses... yes checking how to run the C preprocessor... gcc -E checking for X... libraries /usr/X11R6/lib, headers /usr/X11R6/include checking for ANSI C header files... yes checking for unistd.h... yes checking for working const... yes updating cache ./config.cache creating ./config.status creating lib/Makefile creating src/Makefile creating Makefile |
Для лучшего управления информацией, генерируемой configure, из командной строки или через переменные окружения могут быть добавлены некоторые опции. Пример:
$ ./configure --with-gcc --prefix=/opt/GNU |
$ export CC=`which gcc` $ export CFLAGS=-O2 $ ./configure --with-gcc |
$ CC=gcc CFLAGS=-O2 ./configure |
Обычно это ошибка подобного вида: configure: error: Cannot find library guile (подобным образом выглядит большинство ошибок скрипта configure).
Это означает, что скрипт configure не смог найти библиотеку (в этой примере библиотеку guile). Принцип заключается в том, что скрипт configure компилирует небольшую тестовую программу, использующую эту библиотеку. Если компиляция этой программы завершится неудачей, то невозможно будет откомпилировать и весь программный пакет. Затем возникает ошибка.
Причину ошибки ищите в конце файла config.log, содержащего отчёт обо всех этапах конфигурирования. Компилятор C выводит довольно чёткие сообщения об ошибках. Обычно это поможет вам при решении возникающих проблем.
Проверьте, правильно ли установлена названная библиотека. Если это не так - установите её (из исходных кодов или в виде откомпилированного бинарного файла) и ещё раз запустите configure. Эффективным способом проверки является поиск файла, содержащего символы библиотеки, коим всегда будет lib<имя>.so. Например,
$ find / -name 'libguile*' |
$ locate libguile |
Проверьте, доступна ли библиотека для компилятора. Это означает, что она находится в одном из каталогов: /usr/lib, /lib, /usr/X11R6/lib (или в одном из тех, что определеныпеременной окружения LD_LIBRARY_PATH, как описано в «А что если... это не работает?» пункт b). Проверьте, является ли этот файл библиотекой, набрав file libguile.so.
Проверьте, правильно ли установлены заголовочные файлы библиотеки (обычно в /usr/include, /usr/local/include или /usr/X11R6/include). Если вы не знаете, какие файлы заголовков вам нужны, проверьте, установлена ли у вас development-версия (для разработки) требуемой библиотеки (например, libgtk+2.0-devel вместо libgtk+2.0). Версия библиотеки для разработки предоставляет файлы «include», необходимые для компиляции ПО, использующего эту библиотеку.
Проверьте, достаточно ли у вас свободного дискового пространства (для скрипта configure требуется некоторый объём для временных файлов). Воспользуйтесь командой df -h для вывода списка разделов вашей системы и обратите внимание на заполненные или почти заполненные разделы.
Если вы не понимаете сообщения, сохранённые в файле config.log, не стесняйтесь попросить помощи у сообщества свободного ПО (см. раздел «Техническая поддержка»).
Кроме того, проверьте, существует ли библиотека, даже если configure говорит, что её нет (например, было бы очень странно, если бы в вашей системе отсутствовала библиотека curses). В этом случае, вероятно, повреждена переменная окружения LD_LIBRARY_PATH!
imake позволяет вам конфигурировать свободное ПО путём создания по простым правилам файла Makefile. Эти правила определяют, какие файлы должны быть откомпилированы для сборки бинарного файла, а imake генерируетсоответствующий Makefile. Эти правила находятся в файле с именем Imakefile.
Интересная вещь, касающаяся imake, заключается в том, что последний использует сайт-зависимую (зависящую от архитектуры) информацию. Этодовольно удобно для приложений, использующих X Window System. Но imake используется также и для многих других приложений.
Простейшее использование imake заключается в переходе в главный каталог распакованного архива и последующем запуске скрипта xmkmf, который вызывает программу imake:
$ xmkmf -a $ imake -DUseInstalled -I/usr/X11R6/lib/X11/config $ make Makefiles |
Если сайт установлен неправильно, перекомпилируйте и установите X11R6!
Для получения дополнительной информации прочтите файлы INSTALL или README. Обычно вам нужно запустить файл install.sh или configure.sh. Затем инсталляционный скрипт будет либо бездиалоговым (и сам определит всё, что ему нужно), либо будет запрашивать у вас информацию о вашей системе (пути, например).
Если вы не можете определить, какой файл нужно запустить, вы можете ввести ./ (в bash'е), а затем дважды нажать TAB. bash автоматически (в конфигурации по умолчанию) дополнит команду возможным исполняемым файлом из каталога (а, следовательно, возможным конфигурационным скриптом). Если выполнены могут быть несколько файлов, вам будет выведен их список. Затем вам нужно просто выбрать правильный файл.
Другим особым случаем является установка модулей perl. Установка таких модулей выполняется путём запуска конфигурационного скрипта, написанного на perl. Обычно выполняется команда:
$ perl Makefile.PL |
Некоторые дистрибутивы свободного ПО имеют плохо организованную структуру, особенно на начальных этапах разработки (но пользователя об этом предупреждают!). Для них иногда требуется, чтобы вы «вручную» изменили некоторые конфигурационные файлы. Обычно это файлы Makefile (см. раздел «Make») и config.h (это просто условное имя).
Мы не советуем делать эти манипуляции, за исключением тех пользователей, которые действительно знают, что они делают. Для этого требуются реальные знания и немного стремления к успеху, однако практика - путь к совершенству.