Основы программирования в Linux
Основы программирования в Linux читать книгу онлайн
Внимание! Книга может содержать контент только для совершеннолетних. Для несовершеннолетних чтение данного контента СТРОГО ЗАПРЕЩЕНО! Если в книге присутствует наличие пропаганды ЛГБТ и другого, запрещенного контента - просьба написать на почту [email protected] для удаления материала
Если вы — обычный пользователь, то у вас может не быть прав на установку новых команд в каталог /usr/local/bin. Можно изменить в make-файле каталог установки, изменить права доступа к этому каталогу или заменить пользователя (с помощью команды
su
make install
$ <b>rm *.о myapp</b>
$ <b>make -f Makefile3</b>
gcc -I. -g -Wall -ansi -c main.c
gcc -I. -g -Wall -ansi -c 2.c
gcc -I. -g -Wall -ansi -с 3.c
gcc -o myapp main.о 2.o 3.o
$ <b>make -f Makefile3</b>
make: Nothing to be done for 'all'.
$ <b>rm myapp</b>
$ <b>make -f Makefile3 install</b>
gcc -o myapp main.o 2.o 3.o
Installed in /usr/local/bin
$ <b>make -f Makefile3 clean</b>
rm main.о 2.о 3.о
$
Как это работает
Сначала вы удаляете файл myapp и все объектные файлы. Команда
make
all
make
make
make install
make clean
Встроенные правила
До сих пор вы описывали в make-файле подробно, как выполнять каждый шаг. В действительности у команды
make
#include <stdlib.h>
#include <stdio.h>
int main() {
printf("Hello Worldn");
exit(EXIT_SUCCESS);
}
He задавая make-файла, попробуйте откомпилировать ее с помощью команды
make
$ <b>make foo</b>
сс foo.с -о foo
$
Как видите,
make
сс
gcc
cc
gcc
$ <b>rm foo</b>
$ <b>make CC=gcc CFLAGS="-Wall -g" foo</b>
gcc -Wall -g foo.с -o foo
$
С помощью опции
-p
make
make -p
OUTPUT_OPTION = -o [email protected]
COMPILE.с = $(CC) $(CFLAGS) $(CPPFLAGS) $(TARGET_ARCH) -с
%.о: %.с
# commands to execute (built-in) :
$(COMPILE.с) $(OUTPUT_OPTION) $<
Теперь, принимая во внимание описанные встроенные правила, вы можете упростить ваш make-файл, удалив правила для создания объектных файлов и оставив только зависимости, таким образом, соответствующая секция make-файла читается просто:
main.о: main.c a.h
2.о: 2.с a.h b.h
3.o: 3.c b.h c.h
Эту версию можно найти в загружаемом из Интернета программном коде, в файле Makefile4.
Суффиксы и шаблоны правил
Встроенные правила, которые вы видели, действуют, используя суффиксы (подобные расширениям файлов в системах Windows и MS-DOS), поэтому команда
make
Порой возникает потребность в создании новых правил. Авторы приучили себя работать с исходными файлами, которые необходимо компилировать несколькими разными компиляторами: двумя в среде MS-DOS и
gcc
make
Следовательно, нужно было либо задавать правило для каждого отдельного исходного файла, либо научить
make
Для вставки правила с новым суффиксом сначала добавьте строку в make-файл, информирующую команду
make
make
.<old_suffix>.<new_suffix>:
для определения общего правила создания файлов с новым суффиксом из файлов с тем же основным именем, но старым суффиксом.
Далее приведен фрагмент make-файла с новым общим правилом для компиляции файлов с суффиксом .срр в файлы с суффиксом .о:
.SUFFIXES: .cpp