Бен Клеменс - Язык С в XXI веке
Название: | Язык С в XXI веке | |
Автор: | Бен Клеменс | |
Жанр: | Учебники и самоучители по компьютеру, Современные российские издания, Литература ХXI века (эпоха Глобализации экономики), C, C++, C# | |
Изадано в серии: | неизвестно | |
Издательство: | неизвестно | |
Год издания: | 2015 | |
ISBN: | 978-5-97060-101-3 | |
Отзывы: | Комментировать | |
Рейтинг: | ||
Поделись книгой с друзьями! Помощь сайту: донат на оплату сервера |
Краткое содержание книги "Язык С в XXI веке"
Язык C - не просто фундамент всех современных языков программирования, он и сам - современный язык, идеальный для написания эффективных приложений передового уровня. Последние 20 лет C не стоял на месте. Сам язык и окружающая его экосистема подвергаются пересмотру. Эта книга начинается там, где другие заканчиваются. В ней рассказано, как изменилась функциональность, поддерживаемая любым компилятором, благодаря двум новым стандартам C, вышедшим со времен оригинального ANSI. Цель книги - рассмотреть то, чего нет в других учебниках по C: инструменты и окружение; библиотеки для работы со связанными списками и анализаторами XML; написание удобочитаемого кода с дружественным программным интерфейсом. Издание предназначено для программистов, имеющих опыт работы на каком-либо языке и обладающими базовыми знаниями о С.
Читаем онлайн "Язык С в XXI веке" (ознакомительный отрывок). [Страница - 4]
правильные значения флагов, но, по крайней мере, их можно будет один раз запи
сать в makefile и больше об этом не думать.
(!t'J
В аша очередь . Модифицируйте makefile для компиляции erf. c.
При работе с IDE, СМАКЕ или иными альтернативами совместимой с POSIX
программе make в игру «найди переменные�. играть все равно придется. Я продол
жу обсуждение минимального makefile, и у вас не должно возникнуть сложностей
с определением соответствующих переменных в своей IDE.
О Переменная CFLAGS давно и прочно укоренилась в практике, но переменная,
определяющая флаги компоновщика, меняется от системы к системе. Даже
переменная LDLIBS не определена в POSIX, но именно она используется
в GNU make.
О В переменных CFLAGS и LDLIBS мы будем задавать все флаги компилятора и
компонуемые библиотеки. Если в вашей системе есть программа pkg-config,
воспользуйтесь обратными апострофами. Например, в своей системе я поч
ти все программы компоную с библиотеками Apophenia и GLib, поэтому
makefile у меня выглядит так:
CFLAGS= ' p kg-config - - cflag s apoph e n i a g l ib-2 . 0 ' -g -Wa l l - s td=gnu l l -03
LDL I BS = ' pkg-config - - l ibs apophen i a g l ib - 2 . 0 '
Или можно задать флаги -I , -1 и - 1 вручную:
CFLAGS=- I / home / Ь / root / i nc l ude -g -Wa l l -03
LDL I B S = - L / home /Ь / root / l ib - l w e i r d l i b
О
Если вы добавили местоположение библиотеки и соответствующих ей за
головков в строки LDLIBS и CFLAGS и знаете, что в вашей системе это работа
ет, то не имеет смысла впоследствии удалять эту информацию. Так лн уж
важно, что конечный исполняемый файл будет на 1 0 килобайт длиннее, чем
мог бы получиться при создании специального makefile для каждой новой
программы? Это означает, что можно написать один шakefile, содержащий
сведения обо всех библиотеках в системе, и копировать его из проекта в про
ект без изменений.
Глава l. Настраиваем с реду мя ком п иляuии
О
•:•
43
Если имеется два (или более) С-файла, добавьте second . o third . o и т. д.
строку OBJECTS (запятые не нужны, имена разделяются только пробела
ми) в начале показанного выше файла makefile. Программа make использует
эту информацию, чтобы понять, какие файлы строить и с помощью каких
рецептов.
Если программа состоит всего из одного с-файла, то makefile вообще необя
зателен. Находясь в каталоге, где есть только файл erf.c, но нет makefile, вы
полните следующие команды в оболочке:
в
О
expo rt C FLAGS= ' -g -Wa l l -03 - s td=gnu l l '
expo rt LDLIBS= ' - lrn '
rnake e r f
11 полюбуйтесь, как make пользуется своими знаниями о компиляции С, что
бы сделать все остальное.
Какие флаг и ко м понов щи ка зада вать п ри п о ст рое н и и р азделяемой
б и бл и оте к и?
Ч естно говоря , не знаю. В разных операционных системах ( отличающихся как по типу,
так и по году вы пуска ) и даже в одной системе п равила зачастую различаются , и разо
браться в н их нелегко.
Луч ш е пол ьзуйтесь и н струментом Libloo/, о писан н ы м наряду с п рочими в главе 3 , уж
он -то знает все о генерации разделяемых библ и отек в л юбой операционной систе
ме. Я рекомендую п отратить время н а изучение Autotools и тем реш ить п роблему ком
пиляции разделя е м ых библиотек раз и навсегда . Это полезнее, чем тратить время на
знакомство с флагами ком пилятора и п роцедурой ком поновки для каждой целевой
систе м ы .
Сборка библиотек И 3 исходного кода
До сих пор мы говорили о компиляции своей программы с помощью make. Компи
ляц11я же чужого кода - совершенно другая история.
Попробуем на примере какого-нибудь пакета. Библиотека GNU Scientific
Li Ьгагу (GSL) включает великое множество функций для численных расчетов.
Пакет GSL сформирован с помощью Autotools, комплекта инструментов для
подготовки библиотеки к использованию на любой машине. Своей цели этот ком
плект достигает путем проверки всех известных платформенных причуд и выбора
нодходящего обходного решенйя. В наши дни подавляющее большинство про
грамм распространяется с помощью Autotools; подробно о том, как подготовить
пакет для своей программы вместе с библиотеками, будет рассказано ниже в раз
деле « Подготовка пакета с помощью Autotools\>. А пока будем выступать в роли
пользователей и порадуемся тому, как легко и быстро можно установить полезные
библиотеки.
GSL часто можно получить в готовом виде с помощью менеджера пакетов, но
в педагогических целях покажем, как скачать исходный код GSL и откомпилиро
вать его в предположении, что у вас есть привилегии суперпользователя root на
своем компьютере.
44
•:•
Часть 1. --">
Книги схожие с «Язык С в XXI веке» по жанру, серии, автору или названию:
Святослав Сергеевич Лавров, Гиви Сергеевич Силагадзе - Автоматическая обработка данных. Язык Лисп и его реализация Жанр: Литература ХX века (эпоха Социальных революций) Год издания: 1978 Серия: Библиотечка программиста |
Е. А. Роганов, Н. А. Роганова - Язык программирования Ruby Жанр: Учебники и самоучители по компьютеру Год издания: 2020 |
С. Д. Бахтеяров - Язык программирования Оккам Жанр: Другие языки и системы программирования Год издания: 1989 Серия: Транспьютерная технология |
Герберт Джордж Уэллс - Рассказ о XX веке Жанр: Юмористическая фантастика Год издания: 1964 |