Введение

Введение [Вперед] [Вверх] [Назад] [Содержание]
Дальше: Использование Autoconf Вверх: Начало Назад: Содержание

Введение

В предлагаемой работе описывается программное обеспечение GNU, предназначенное для организации исходных текстов больших программ, их конфигурации и компиляции на различных UNIX- (а при использовании окружения Cygwin от Cygnus -- и Windows) платформах. Такое программное обеспечение логично считать вспомогательным (если основным считать компилятор, редактор, отладчик, библиотеку либо аналогичную ей структуру используемого языка и make-программу) и в принципе для организации сколь угодно большого программного проекта достаточно только его. Однако задача, например, модификации нескольких сотен Makefile-файлов при переносе большой системы на другую платформу (вполне реальная задача, если вспомнить о большом разнообразии UNIX-платформ) обычно не решается только основными средствами. В основном потребность учесть особенности компиляции в зависимости от используемой платформы и привела к идее о том, что Makefile-файлы, управляющие собственно процессом компиляции, должны создаваться в соответствии с некоторыми заданными правилами, набор которых может зависеть от используемой платформы, для каждой платформы отдельно.

На сегодняшний день во многих UNIX-системах доступны (либо могут быть легко установлены) два основных средства, разработанных для решения этой задачи. Первое из них -- imake, разработанный X-консорциумом для организации дистрибутива X Window System и иногда используемый для конфигурации и компиляции программ, работающих с X. Второе же -- пакеты Аutoconf/Аutomake от GNU, имеющие на сегоднящний день намного большую популярность и являющиеся фактическим стандартом в мире разработчиков свободно распространяемого программного обеспечения. Большая часть этого документа содержит описание принципов работы и использования программ, входящих в эти пакеты.

Описание принципов работы и примеры использования imake выходит за рамки настоящей работы не только из-за его сравнительно небольшой распространенности, но и еще по одной очень веской причине. Дело в том, что написанная на одной машине с использованием imake программа для конфигурации и компиляции на другой машине требует, чтобы на этой машине тоже был установлен imake. В свою очередь, для конфигурации программ, использующих Аutoconf/Аutomake, не требуется наличие самих этих утилит.

Помимо этого, рассматриваются вопросы интернационализации и локализации (методы и использование соответствующего программного обеспечения), разбор которых дан с точки зрения как программиста, так и конечного пользователя. Вначале описываются действия пользователя, а затем один из механизмов реализации, основанный на так называемых ``каталогах сообщений'' (message catalogs). Этот метод предложен фирмой Sun Microsystems, для организации интернационализации по этому методу и используется пакет gettext. Альтернативный способ интернационализации (т.н. X/Open catgets) не будет изложен вследствие его небольшой распространенности (по крайней мере среди разработчиков свободного ПО).

Изложение дополнено примерами, позволяющими быстрее понять прочитанное. Примеры представляют собой как небольшие программы, предназначенные для иллюстрации основных принципов и механизмов, так и части кода из реальных программ. Предполагается, что читатель знаком с операционной системой и имеет навыки как непосредственно в программировании, так и в организации программ на языке C. Все приведенные примеры работали в ОС Linux RedHat 5.1, при этом использовалось следующее программное обеспечение:

  • ядро ОС Linux версии 2.2.8;
  • C-компилятор egcs версии 1.1.2;
  • библиотека языка C glibc 2.1.1pre1;
  • make версии 3.77;
  • autoconf версии 2.13;
  • automake версии 1.4;
  • gettext версии 0.10.35;
  • макропроцессор GNU m4 версии 1.4;
  • Perl версии 5.004;

Необходимо также заметить, что скорость развития и распространения свободного ПО может довольно быстро стать причиной устаревания этого документа. Кроме того, автор собирался не полностью заменить всю документацию по упомянутому выше ПО, а лишь описать правила использования и привести примеры. Поэтому -- читайте документацию. И наконец, так как грамотное использование любого ПО требует не только знания того, как оно работает, но и опыта применения к реальным задачам, автор не претендует на то, чтобы все приведенные примеры считались идеальными.


Dmitry A. Antipov
1999-05-26