Ответ
Процесс сборки зависит от системы сборки, которую использует проект. Вот общий алгоритм, который я применяю.
1. Подготовка окружения: Устанавливаю инструменты для сборки и зависимости.
# Для Ubuntu/Debian
sudo apt update
sudo apt install build-essential cmake git
# Часто нужны библиотеки dev
sudo apt install libssl-dev zlib1g-dev
# Для RHEL/CentOS/Fedora
sudo yum groupinstall "Development Tools"
sudo yum install cmake openssl-devel zlib-devel
2. Получение исходного кода:
git clone https://github.com/example/project.git
cd project
# Или для архивов
tar -xzf project.tar.gz
cd project
3. Конфигурация:
Многие проекты используют autotools (скрипт configure).
./configure --prefix=/usr/local # Указываю путь для установки
Если проект использует CMake, действую иначе:
mkdir build && cd build
cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr/local ..
4. Сборка:
make -j$(nproc) # Использую все доступные ядра для ускорения
5. Установка (опционально):
sudo make install
Практический пример с nginx:
git clone https://github.com/nginx/nginx.git
cd nginx
./auto/configure --with-http_ssl_module --with-stream
make -j4
sudo make install
Важные моменты:
- Всегда проверяю файлы
README.md,INSTALLилиCONTRIBUTING.mdдля специфичных инструкций. - Для сборки пакетов
.debили.rpmиспользуюcheckinstallвместоmake install, чтобы потом можно было легко удалить программу через пакетный менеджер. - Если сборка завершается ошибкой из-за отсутствующей библиотеки, ищу пакет с суффиксом
-devили-develв репозитории дистрибутива.