Издательский дом ООО "Гейм Лэнд"ЖУРНАЛ ХАКЕР #72, ДЕКАБРЬ 2004 г.

Операционные инструменты *nix-кодера

Иван Скляров

Хакер, номер #072, стр. 072-104-3


Выводим символы на чистую воду

Команда nm выдает на стандартный вывод таблицу внешних символов для каждого файла, указанного в командной строке. Таблица символов используется для отладки приложения. Для каждого символа будет выведено его имя и указано, является ли он символом данных (переменной) или программным символом (меткой или именем функции). Подробности смотри на страницах справочных руководств, посвященных nm. Пример использования:

$ nm ./program

Удаляем неиспользуемую информацию

Когда программа отлажена, таблицу символов из нее можно удалить, для чего используется команда strip. В результате уменьшается размер выполняемого файла, но в наше время это не столь существенно, и отладочную информацию все же лучше оставить. Пример:

$ strip ./program

Управляем проектом разработки

Если проект состоит из множества файлов, то любое изменение в одном из них неизбежно влечет за собой перекомпиляцию всех остальных. Облегчить эту задачу способна утилита make (в некоторых системах она называется gmake). Этой утилите нужно передать простой текстовый файл под названием Makefile, который содержит информацию о правилах сборки и зависимостях. Правила записываются в следующем виде:

<цель> : <зависимости>

<команда>

<команда>

...

Первая цель в Makefile выполняется по умолчанию при запуске make без аргументов. Ее принято называть all, что эквивалентно команде make all. Цель clean предназначена для удаления всех сгенерированных объектных файлов и программ.

Пример Makefile

all: program

program: program.o foo.o boo.o

gcc program.o foo.o boo.o -o program

program.o: program.c program.h

foo.o: foo.c foo.h

boo.o: boo.c boo.h

clean:

rm -f *.o program

Чтобы собрать проект, достаточно в командной строке набрать

$ make

В man об утилите make можно узнать много других интересных подробностей.

Автоматизируем процессы

Но есть еще один, более простой способ создания Make-файлов, с помощью утилит automake и autoconf. Сначала нужно подготовить файл Makefile.am, например:

bin_PROGRAMS = program

you_prog_SOURCES = program.c foo.c boo.c

AUTOMAKE_OPTIONS = foreign

Последняя опция указывает на то, что в проект не будут включаться файлы документации NEWS, README, AUTHORS и ChangeLog. Согласно стандарту их присутствие в GNU-пакете обязательно.

Теперь нужно создать файл configure.in. Это можно сделать с помощью утилиты autoscan. Autoscan выполняет анализ дерева исходных текстов, корень которого указан в командной строке или совпадает с текущим каталогом, и создает файл configure.scan. Нужно просмотреть configure.scan, внести необходимые коррективы и затем переименовать в configure.in. И последним этапом следует запустить утилиты в следующем порядке:

$ aclocal

$ autoconf

$ automake -a -c

В результате в текущей директории появятся скрипты configure, Makefile.in и файлы документации. Чтобы собрать проект, достаточно ввести следующие команды:

Назад на стр. 072-104-2  Содержание  Вперед на стр. 072-104-4