Программирование для Linux. Профессиональный подход - [5]
>src и >include. Следующая команда даст компилятору >g++ указание дополнительно искать файл >reciprocal.hpp в каталоге >../include :>% g++ -с -I ../include reciprocal.cpp
Иногда требуется задать макроконстанты в командной строке. Например, в коммерческой версии программы нет необходимости осуществлять избыточную проверку утверждения в файле >reciprocal.cpp; она нужна лишь в целях отладки. Эта проверка отключается путем определения макроконстанты >NDEBUG. Можно, конечно, явно добавить в файл директиву >#define, но это означает изменение исходного текста программы. Проще сделать то же самое в командной строке:
>% g++ -c -D NDEBUG reciprocal.cpp
Аналогичным образом можно задать конкретный уровень отладки:
>% g++ -с -D NDEBUG=3 reciprocal.cpp
При написании коммерческих программ оказываются полезными средства оптимизации кода, имеющиеся в компиляторах GCC. Есть несколько уровней оптимизации; для большинства программ подходит второй. Следующая команда компилирует файл >reciprocal.cpp с включенным режимом оптимизации второго уровня:
>% g++ -с -O2 reciprocal.cpp
Учтите, что средства оптимизации усложняют отладку программы. Кроме того, бывают случаи, когда наличие оптимизации приводит к проявлению скрытых ошибок, незаметных ранее.
Компиляторы >gcc и >g++ принимают множество различных опций. Получить их полный список можно в интерактивной документации. Для этого введите следующую команду:
>% info gcc
1.2.2. Компоновка объектных файлов
После того как файлы >main.c и >reciprocal.cpp скомпилированы, необходимо скомпоновать их. Если в проект входит хотя бы один файл C++, компоновка всегда осуществляется с помощью компилятора >g++. Если же все файлы написаны на языке С, нужно использовать компилятор >gcc. В нашем случае имеются файлы обоих типов, поэтому требуемая команда выглядит так:
>% g++ -о reciprocal main.o reciprocal.o
Опция -о задает имя файла, создаваемого в процессе компоновки. Теперь можно осуществить запуск программы >reciprocal:
>% ./reciprocal 7
>The reciprocal of 7 is 0.142857
Как видите, компилятор >g++ автоматически подключил к проекту стандартную библиотеку языка С, содержащую реализацию функции >printf(). Для компоновки дополнительных библиотек (например, модуля функций графического интерфейса пользователя) необходимо воспользоваться опцией >-l. В Linux имена библиотек почти всегда начинаются с префикса >lib. Например, файл подключаемого модуля аутентификации (Pluggable Authentication Module, РАМ) называется >libpam.a. Чтобы скомпоновать его с имеющимися файлами, введите такую команду:
>% g++ -о reciprocal main.o reciprocal.o -lpam
Компилятор автоматически добавит к имени библиотеки префикс >lib и суффикс >.a.
Как и в случае с файлами заголовков, компилятор ищет библиотечные файлы в стандартных каталогах, в частности >/lib и >/usr/lib. Для задания дополнительных каталогов предназначена опция >-L, которая аналогична рассматривавшейся выше опции >-I. Следующая команда сообщает компоновщику о том, что поиск библиотечных файлов нужно осуществлять прежде всего в каталоге >/usr/local/lib/pam:
>% g++ -o reciprocal main.o reciprocal.o -L/usr/local/lib/pam -lpam
В отличие от препроцессора, автоматически ведущего поиск файлов заголовков в текущем каталоге, компоновщик просматривает лишь стандартные каталоги. Поэтому, если библиотечный файл находится в текущем каталоге, об этом нужно сообщить явно с помощью опции >-L. Например, после выполнения следующей команды компоновщик будет искать в текущем каталоге библиотеку >test:
>% gcc -o app app.o -L. -ltest
1.3. Автоматизация процесса с помощью GNU-утилиты make
Те, кто программируют в Windows, привыкли работать в той или иной интегрированной среде разработки. Программист добавляет в нее исходные файлы, а среда автоматически создает проект. Аналогичные среды доступны и в Linux, но мы не будем рассматривать их. Вместо этого мы научим читателей работать с GNU-утилитой >make, знакомой большинству Linux-программистов. Она позволяет автоматически перекомпилировать программу.
Основная идея утилиты >make проста. Ей указываются целевые модули, участвующие в процессе построения исполняемого файла, и правила, по которым протекает этот процесс. Также задаются зависимости, определяющие, когда конкретный целевой модуль должен быть перестроен.
В нашем тестовом проекте >reciprocal три очевидных целевых модуля: >reciprocal.o, >main.o и сама программа >reciprocal. Правила нам уже известны: это рассмотренные выше командные строки. А вот над зависимостями нужно немного подумать. Ясно, что файл >reciprocal зависит от файлов >reciprocal.o и >main.o, поскольку нельзя скомпоновать программу, не создав оба объектных файла. Последние должны перестраиваться при изменении соответствующих исходных файлов. Нельзя также забывать о файле >reciprocal.hpp: он включается в оба исходных файла, поэтому его изменение тоже затрагивает объектные файлы.
Помимо очевидных целевых модулей должен также существовать модуль
В этой книге автор, сам прошедший путь от разработчика до менеджера в сфере IT, рассказывает неочевидные моменты, которые являются критически важными для правильного управления. Почему разработчики увольняются после повышения зарплаты? Как делать FixedPrice проекты? Почему Scrum не упрощает менеджмент? Книга содержит ответ на эти и многие другие вопросы. В книге есть много баек, которые показывают тяжёлую, но интересную жизнь менеджера в разработке. Иллюстратор обложки: Ксения Ерощенко. Иллюстрации в тексте книги авторские.
Java Enterprise Edition (Java EE) остается одной из ведущих технологий и платформ на основе Java. Данная книга представляет собой логичное пошаговое руководство, в котором подробно описаны многие спецификации и эталонные реализации Java EE 7. Работа с ними продемонстрирована на практических примерах. В этом фундаментальном издании также используется новейшая версия инструмента GlassFish, предназначенного для развертывания и администрирования примеров кода. Книга написана ведущим специалистом по обработке запросов на спецификацию Java EE, членом наблюдательного совета организации Java Community Process (JCP)
В учебно-методическом пособии рассматриваются основы языка программирования PL/SQL, реализованного в системе управления базами данных Oracle Database Server. Приводятся сведения о поддерживаемых типах данных, структуре программ PL/SQL и выполнении SQL-предложений в них. Отдельно рассмотрено создание хранимых в базах данных Oracle программ PL/SQL – процедур, функций, пакетов и триггеров.
Разработчику часто требуется много сторонних инструментов, чтобы создавать и поддерживать проект. Система Git — один из таких инструментов и используется для контроля промежуточных версий вашего приложения, позволяя вам исправлять ошибки, откатывать к старой версии, разрабатывать проект в команде и сливать его потом. В книге вы узнаете об основах работы с Git: установка, ключевые команды, gitHub и многое другое.В книге рассматриваются следующие темы:основы Git;ветвление в Git;Git на сервере;распределённый Git;GitHub;инструменты Git;настройка Git;Git и другие системы контроля версий.
ГОСУДАРСТВЕННЫЙ СТАНДАРТ РОССИЙСКОЙ ФЕДЕРАЦИИИнформационная технологияРУКОВОДСТВО ПО УПРАВЛЕНИЮ ДОКУМЕНТИРОВАНИЕМ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯInformation technology. Guidelines for the management of software documentationИздание официальноеДата введения 1994-07-01ГОССТАНДАРТ РОССИИ Москва© Издательство стандартов, 1994.
Самоучитель UMLПервое издание.В книге рассматриваются основы UML – унифицированного языка моделирования для описания, визуализации и документирования объектно-ориентированных систем и бизнес-процессов в ходе разработки программных приложений. Подробно описываются базовые понятия UML, необходимые для построения объектно-ориентированной модели системы с использованием графической нотации. Изложение сопровождается примерами разработки отдельных диаграмм, которые необходимы для представления информационной модели системы.