-->

Основы программирования в Linux

На нашем литературном портале можно бесплатно читать книгу Основы программирования в Linux, Мэтью Нейл-- . Жанр: Программирование / ОС и Сети. Онлайн библиотека дает возможность прочитать весь текст и даже без регистрации и СМС подтверждения на нашем литературном портале bazaknig.info.
Основы программирования в Linux
Название: Основы программирования в Linux
Дата добавления: 16 январь 2020
Количество просмотров: 672
Читать онлайн

Основы программирования в Linux читать книгу онлайн

Основы программирования в Linux - читать бесплатно онлайн , автор Мэтью Нейл
В четвертом издании популярного руководства даны основы программирования в операционной системе Linux. Рассмотрены: использование библиотек C/C++ и стан­дартных средств разработки, организация системных вызовов, файловый ввод/вывод, взаимодействие процессов, программирование средствами командной оболочки, создание графических пользовательских интерфейсов с помощью инструментальных средств GTK+ или Qt, применение сокетов и др. Описана компиляция программ, их компоновка c библиотеками и работа с терминальным вводом/выводом. Даны приемы написания приложений в средах GNOME® и KDE®, хранения данных с использованием СУБД MySQL® и отладки программ. Книга хорошо структурирована, что делает обучение легким и быстрым. Для начинающих Linux-программистов

Внимание! Книга может содержать контент только для совершеннолетних. Для несовершеннолетних чтение данного контента СТРОГО ЗАПРЕЩЕНО! Если в книге присутствует наличие пропаганды ЛГБТ и другого, запрещенного контента - просьба написать на почту [email protected] для удаления материала

Перейти на страницу:

.cpp.o:

 $ (CC) -xc++ $(CFLAGS) -I$(INCLUDE) -с $<

Особая зависимость

.cpp.o:
информирует команду
make
о том, что следующие правила предназначены для трансляции файла с суффиксом .cpp в файлы с суффиксом .о. При написании этой зависимости применяются имена специальных макросов, поскольку неизвестны реальные имена файлов, которые будут транслироваться. Для того чтобы понять это правило, нужно просто вспомнить, что символы
$<
заменяются начальным именем файла (со старым суффиксом). Имейте в виду, что вы сообщили
make
только о том, как получить из файла с суффиксом .cpp файл с суффиксом .о; как из объектного файла получить двоичный исполняемый файл, команда
make
уже знает.

После запуска команда

make
применяет ваше новое правило для получения из файла bar.cpp файла bar.o; далее она использует свои встроенные правила для превращения файла с суффиксом .о в исполняемый файл. Дополнительный флаг
-xc++
должен сообщить программе
gcc
о том, что она имеет дело с исходным файлом на языке C++.

В наши дни команда

make
знает, как работать с исходными файлами на С++ с расширениями cpp, но данный метод полезен для преобразования файла одного типа в файл другого типа.

Самые последние версии команды make включают в себя альтернативную синтаксическую запись для достижения того же эффекта и многое другое. Например, правила с шаблонами используют знак подстановки

%
для сопоставления имен файлов и не полагаются на одни лишь расширения этих имен.

Далее приведено правило с шаблоном, эквивалентное предыдущему правилу с суффиксом .cpp:

%.cpp: %o

 $(СС) -xc++ $(CFLAGS) -I$(INCLUDE) -с $<

Управление библиотеками с помощью make

Когда вы работаете над большими проектами, часто удобно управлять компиляцией нескольких программных единиц с помощью библиотеки. Библиотеки — это файлы, в соответствии с соглашением имеющие расширение a (archive) и содержащие коллекцию объектных файлов. Для работы с библиотеками у команды make есть специальная синтаксическая запись, которая существенно облегчает управление ими.

Синтаксическая запись

lib(file.о)
означает объектный файл file.o, хранящийся в библиотеке lib.а. У команды
make
есть встроенное правило для управления библиотеками, которое обычно эквивалентно приведенному далее фрагменту:

.с.а:

 $(CC) -с $(CFLAGS)

 $< $(AR) $(ARFLAGS) [email protected] $*.о

Макросы

$(AR)
и
$(ARFLAGS)
подразумевают команду
ar
и опции
rv
соответственно. Довольно краткая синтаксическая запись информирует команду
make
о том, что для включения файла .с в библиотеку .а следует применить два следующих правила:

□ первое правило говорит о том, что команда

make
должна откомпилировать исходный файл и сформировать объектный файл;

□ второе правило предписывает применить команду

ar
для модификации библиотеки, заключающейся в добавлении нового объектного файла.

Итак, если у вас есть библиотека fud, содержащая файл bas.o, в первом правиле

$<
заменяется именем bas.c. Во втором правиле
[email protected]
заменяется именем библиотеки
fud.а
и
$*
заменяется именем
bas
.

Выполните упражнение 9.4.

Упражнение 9.4. Управление библиотекой

Правила управления библиотеками очень просто применять на практике. В этом упражнении вы измените свое приложение, сохранив файлы 2.o и 3.o в библиотеке mylib.a. Make-файл потребует лишь нескольких изменений и его новый вариант Makefile5 будет выглядеть следующим образом:

all: myapp

# Какой компилятор

CC = gcc

# Куда установить

INSTDIR = /usr/local/bin

# Где хранятся файлы include

INCLUDE =

# Опции для разработки

CFLAGS = -g -Wall -ansi

# Опции для рабочей версии

# CFLAGS = -O -Wall -ansi

<i># Локальные библиотеки</i>

<i>MYLIB = mylib.a</i>

<i>myapp: main.o $(MYLIB)</i>

<i> $(CC) -o myapp main.o $(MYLIB)</i>

<i>$(MYLIB): $(MYLIB)(2.o) $(MYLIB)(3.o)</i>

<i>main.o: main.c a.h</i>

<i>2.o: 2.c a.h b.h</i>

<i>3.o: 3.c b.h c.h</i>

<i>clean:</i>

<i> -rm main.o 2.o 3.o $(MYLIB)</i>

install: myapp

 @if [ -d $(INSTDIR) ];

 then

  cp myapp $(INSTDIR);

  chmod a+x $(INSTDIR)/myapp;

  chmod og-w $(INSTDIR)/myapp;

  echo &quot;Installed in $(INSTDIR)&quot;;

 else

  echo &quot;Sorry, $(INSTDIR) does not exist&quot;;

 fi

Обратите внимание на то, как вы разрешили правилам по умолчанию выполнить большую часть работы. Теперь проверьте новую версию make-файла:

$ <b>rm -f myapp *.o mylib.a</b>

$ <b>make -f Makefile5</b>

gcc -g -Wall -ansi -с -o main.о main.c

gcc -g -Wall -ansi -с -o 2.о 2.c

ar rv mylib.a 2.o

Перейти на страницу:
Комментариев (0)
название