GCC - The Complete Reference (537669), страница 61
Текст из файла (страница 61)
То же, что — рк1лс-61кессоку. То же, что --аввшве-леи. -и Е11елвие — иакл-илеее1лее-еак1аь1е Выводит предупреждение для каждой ссылки на переменную, которая не была определена. То же, что --ввввие-леи. --ивак-11 к11алвте В качестве своей команды процесс втайе может запускать другой такой же процесс. В таком случае опции, установленные для родительского экземпляра процесса, передаются и дочернему экземпляру. Ввиду этого имеются опции, позволяющие восстанавливать используемые по умолчанию настройки, которые могут быть включены в команду запуска дочернего процесса шахе. Другая причина применения опций восстановления настроек по умолчанию состоит в том, что настройки могут быть изменены с помощью переменной окружения ЬЦККВВЬАВВ. Утилита АШосоЫ дцеосоп~ — это утилита, которая создает сценарии установки для включения их в распространяемый исходный код.
По умолчанию вырабатываемый сценарий командной оболочки называется оопй1дихе. Он выполнятся независимо, поэтому для настройки и установки программного обеспечения устанавливать в целевой системе утилиту диеооопб не требуется. Использование утилиты дцеосопб для упаковки и организации распространения программного обеспечения дает несколько преимуществ. Сценарий ооп~1пихе проверит наличие или присутствие некоторых системных возможностей и сформирует компоновочные гпаКе-файлы, учитывающие свойства текущей среды.
Это означает, что приложение может быть перенесено практически на любую версию 1Л~! Х. Метод установки программного обеспечения с помощью используемого для настройки компиляции сценария сопй1яцге получил широкое распространение и хорошо знаком многим пользователям программ с открытым исходным кодом. Для установки программного обеспечения, пакетированного с помощью утилиты ъцеоаопб, как правило, выполняются следуюшие команды; $ ./сопеьдцке в вахе в мазке 1пвса11 Утилита Ацеосопб в действительности является набором инструментов, перечисленных в таблице 14.2. В зависимости от сложности приложения и требуемой степени его переносимости процесс создания установочных сценариев может изменяться от достаточно простой процедуры до очень сложной.
В любом случае в качестве общего руководства может использоваться приведенная ниже последовательность действий. 274 Часть 111. Внутренняя структура и окружение Таблица 14.2. Инструменты утилиты АнтосопТ Ив струи ввт Оввеаввв На основе файла шаблона, используемого в качестве исходных данных, этот инструмент генерирует сценарий настройки конфигурации. Тот, в свою очередь, будет генерироватыпане-файлы и конфигурационные сценарии для текущей (или указанной) платформы.
Эта программа создает файл шаблона, содержащий операторы $1по1иее, который будет использоваться сценарием совЕ1дикв, созданным с помощью инструмента аикооолЕ. Программа, обновляющая сценарии настройки конфигурации. Она запускает программы аокосопе только в тех каталогах, где атрибут даты/времени файпов указывает на необходимость обновления. Эта программа сканирует файлы исходного кода в дереве исходных каталогов и генерирует предварительную версию файла шаблона, который будет использоваться в качестве входного файла для виьосоле. Данная программа обновляет существующий файл шаблона для приведения его в соответствие с текущей версией вкеосопЕ. Эта программа сканирует все файлы исходного кода на языке С и имена, содержащиеся в директивах препроцессора «Ее, ме11е, «седее и $1епеее.
Список выводится в упорядоченном виде, для каждого имени приводится список файлов, где это имя было обнаружено. ацеооопЕ вкковеасек авсокеоопЕ авеовсап викоиреаке 1Епьиев 1. Установите параметры условной компиляции. Для обеспечения переносимости программного обеспечения часто в заголовочных файлах используются директивы препроцессора. Для сбора информации по условной компиляции запустите программу хе пащев для исходных файлов, которые будут обрабатываться препроцессором, Например, следующая команда обработает все исходные файлы на языке С и все включаемые в ннх заголовочные файлы: $3.Епввша *.с, *.Ь Результат выполнения приведенной команды представляет собой список имен макросов, определенных с условиями, и файлов, в которых эти макросы определены.
2. Создайте файл сопЕЕдцге. 1П. В исходном каталоге из командной строки запустите утилиту ацсовсап без аргументов: в ацсовоап Результатом выполнения ацсовсап будет файл сопездцге. всап, который будет в дальнейшем использован в качестве шаблона для создания окончательной версии сценария сопе1дцке. Скопируйте (или переместите) файлы сорб здцхе. всап и сопбздцге.
1п, это потребует внести в них соответствуюшие поправки. 3. Отредактируйте файл сопЕ1дцхе.1п. Это основная часть задачи. Файл сопездцте. 1п состоит из макро-директив вта, предназначенных для обработки утилитой ъцеосопб при генерации окончательной версии скценария сопЕ1дцтв. Если процесс установки становится сложнее, и только макросы Перейдите в каталог, где хранятся файлы исходного кода, и выполните следуюшие действия: Глава )4.
утилиты таКе и дц(осоп( 275 Таблица 14.3. Макросы п)4, используемые в сценарии сопййцге.1п Этот макрос проверяет тип сьвг по умолчанию и определяет макрос силн Омвтамер, если тип не содержит знака. Макрос проверяет метод обработки компилятором С ключевого слова сопвс и при необходимости переопределяет его. Этот макрос проверяет наличие укаэанных в списке функций.
Имена функций разделяются запятыми. Проверяет наличие одного или большего количества заголовочных файлов, содержащихся в списке и разделенных запятыми. Этот макрос проверяет наличие указанных в списке библиотек. Имена библиотек указываются в короткой форме. Функции, входящие в состав библиотеки, должны также быть указаны для проверки, например, библиотека Тььсеопс должна содержать функцию Ьае, если указано: АС СННСК ЫВ(сеопк, Ьае) Ас с снАЕ Омвгамер Ас с сонет АС СНЕСК РОМСВ АС СНЕСК НЕАВЕНВ АС СНЕСК ЬТВ Макрос указывает имя каталога, содержащего 1пвса11-вЬ, соп11д. впЬ и соп11д.
деева. Как правило, каталоги по умолчанию обычно корректны. Но для предотвращения ошибок может применяться этот макрос для указания абсолютного или относительного пути к этим файлам. Макрос составляет заголовочные файлы, содержащие директивы Вае11пе. ПОСЛЕ ИМЕНИ СОЗдаВаЕМОГО файЛа уКаЗЫВаЕтея двоеточие и имя входного файла, содержащего директивы. Например, заголовочный файл сопегд.Ь создается на основе содержимого файла сопсгд. 1п с помощью макроса: АС СОМРХО НЕАВЕН(солссд.Ь: сопегд.сп) АС СОМР1а Аск В1н Ас сомуза ненпен Указывает список каталогов, которые могут содержать сценарии сопесдике, запускаемые генерируемым сценарием.
Имена каталогов разделяются пробелами. Макрос проверяет правильность работы функции жепсжр() с В-битным выравниванием. Этот макрос проверяет правильность работы функции всхес1же() . МаКРОС ПРОВЕРЯЕТ НаЛИЧИЕ ФУНКЦИИ чркспке() . Проверяет наличие в системе стандартных заголовочных файлов языка С. Ас сомуга всвртн АС РОМС МЕНСМР Ас Рсмс втнутсме АС РОМС ЧРН1МТР АС НЕАВЕН БТВС Этот макрос проверяет наличие заголовочного файла вув/пасс.
Ь, совместимого с РОЗ)Х. Ас неАВен вха МА1т Этот макрос подтверждает, что заголовочные файлы сне. ь и вувгсьже. ь могут быть включены в один и тот же блок компиляции. Ас МЕАВНЕ тзме уже не могут им управлять, в сценарий можно включить фрагменты сценария оболочки.
Эти фрагменты будут скопированы в окончательную версию сценария сопбздцге, Исходный скрипт сопб1дцге. 1п содержит больцюе количество макросов, необходимых для окончательной версии, а также целый ряд описательных комментариев (которые начинаются с символа "й"). При внесении в файл изменений старайтесь добавлять свои комментарии. В таблице 14.3 приведено описание информации, необходимой для определения различных макросов. 276 Часть)И. Внутренняя структура и окружение Этот макрос должен быть первым.
Он содержит имя уникально названного файла в качестве проверки того, чта пользователь запустил сценарий в нужном каталоге, например; АС ХМХТ(нетто.а) Вторым обязательным макросам является Ас от)трат. Этот макрос обязателен. Он именует и создает гпаке-файл, иногда и некоторые другие выходные файлы. Если в наго включить дополнительные аргументы, то это будут команды, которые добавляются в сценарий сапезв.есвьнв для выполнения их после выполнения всех остальных команд.
Как правило, макрос используется в таком виде: АС ОСТРОТ(мвнетьзе) В~срым обязательным макросом является Ас хмхт. Указывает дополнительные команды, которые будут выполняться в конце сценария сапекр. всат се. Он может использоваться повторно, например: Ас ортрат соммнира(есьо Ал ехг.кв совмвве) Ас хмхт АС ОСТРОТ Ас Острст сомзтзирв Этот макрос указывает префикс установки вместо используемого по умолчанию /ивк/Хасвт, например: Ас Рненхх реуноьт(гьожеххкеегвесв) АС РВЕРХХ РЕРЗОЗЬТ Если пользователь не установил префикс с помощью опции -ркеххх, то этот макрос будет искать указанную программу с помощью переменной Рнте и установит значение префикса Равным каталогу, содержащему программу.
Этот макрос гарантирует, что используется достаточно новая версия Асьасоле. Например, следующий макрос проверит, что используется версия 1.6 или выше: Ас Рненео(х.а) Предопределяет переменную Инне твк, как если бы была установлена переменная окРужения МАВВ ваке. Копирует указанную информацию в сценарий советнике. Проверяет наличие указанных операторов ьуреает и определяет пропущенные операторы. Этот макрос также проверяет наличие указанных операторов суреаек и определяет пропущенные типы.
АС РВЕРХХ РНОСВАМ АС РНЕНЕО АС РВОЕ ИАВВ 9ЕТ АС ВЕУХВХОИ АС ТУРЕ ОРР Т АС ТУРЕ ВХВЕ Т Каждый макрос содержит список элементов, разделенных запятыми, в следу- ющем формате: АС СНВСК ЬХВ(бт, бтореп, воснес) Между именем макроса и открываю(цей скобкой не должно быть пробелов. Аргументы могут быть заключены в квадратные скобки.