Добавление репозиториев и компиляция приложений на C++
Добавление репозитория
В качестве внешнего репозитория будем использовать репозиторий Docker.
https://docs.docker.com/install/linux/docker-ce/debian/
- Удостоверится, что нужное ПО установлено. В частности: возможность получать данные по HTTPS, получать ключи, а также управлять дополнительными репозиториями.
- Надо получить ключ нового репозитория.
- Обновить кеш пакетов из всех подключённых на данный момент репозиториев.
- Установить ПО из подключённого репозитория.
Установка ПО из исходных кодов (компиляция прогрмм на C/C++)
Как происходит компиляция приложений на C
Исходный код представляет собой коллекцию .h и .cpp-файлов, которые должны работать вместе и из них должно получится бинарное приложение. Сама компиляция состоит из двух шагов:
- Компиляция .c или .cpp-файлов в объектные файлы.
- Линковка созданных объектных файлов в исполняемый файл.
Давайте напишем простейшее приложение на Си. Нам потребуется:
- Текстовый редактор. (vim, emacs и др.)
- Компилятор. Для установки базового набора из компилятора и ключевых библиотек в Debian можно поставить мета-пакет build-essential. После его установки у вас будут все средства для сборки простейших приложений (коих большинство).
В экосистеме GNU есть компилятор GCC: GNU C Compiler. Компания Apple развивает (или спонсирует) альтернативный проект, который называется LLVM в рамках которого развивается компилятор clang.
Для создания приложения нам надо создать файл с исходными кодами.
Системы сборки
В задачу системы сборки входит правильная настройка компилятора и корректное выполнение шагов компиляции приложения. В продвинутых системах сборки (не на C++) входит также возможность установки зависимостей.
Какие есть системы сборки?
- Make
- GNU Autotools
- CMake
- Ninja
- QMake
- ….
Make
Make - приложение, которое позволяет выполнять действия в соответствии с шаблонными правилами. Т.е. вы можете определить шаблон по переводу .c-файла в .o-файл, а make выполнит это действие для всех релевантных файлов.
Потенциально данную систему можно использовать в любых процессах, связанных с переработкой одних типов файлов в другие типы файлов. Например, так делаются презентации (у меня).
Правила перевода одних типов файлов в другие описан в Makefile (или makefile).
В данном файле помимо правил также описываются различные цели. Цель позволяет определить конечный результат выполнения тех или иных действий. К примеру, у нас есть цель - готовое приложение, которое зависит от бинарных файлов, полученных в результате компиляции. Если мы попросим make достичь данную цель, то он сначала создаст все зависимости, а потом уже выполнит нужную цель. Таким образом можно стороить достаточно сложные связные цепочки по обработке исходных файлов.
Установка приложения с использованием Make
Давайте потренируемся в его использовании. Скомпилируем и установим приложение ne
. http://ne.di.unimi.it/
- Получить исходный код приложения
$ wget http://ne.di.unimi.it/ne-3.1.2.tar.gz
- Распаковать архив с данным приложением
$ tar xf ne-3.1.2.tar.gz
- Перейти в каталог с приложением и запустить компиляцию. Обычно компиляция заключается в вызове
make
с специальными параметрами.
Как найти нужный пакет?
Перед нами стоит простая задача. Мы на 100% знаем название файла, который хотим получить. Но мы не знаем пакета, в котором содержится данный файл. Для решения этой задачи можно воспользоваться 2 инструментами:
apt-file
- http://packages.debian.org