Операционные инструменты *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 и файлы документации. Чтобы собрать проект, достаточно ввести следующие команды: |