Повторная компиляция с помощью ServBay
ServBay предоставляет мощную и полноценную локальную web-среду разработки для пользователей macOS и Windows, включающую широкий набор программных пакетов и инструментов. Помимо предустановленных версий пакетов ServBay, разработчики иногда сталкиваются с необходимостью повторной компиляции для решения специфических задач, например:
- Активация определённых опций компиляции для конкретного пакета.
- Добавление модулей или расширений, которые по умолчанию не входят в ServBay (например, новых PHP-расширений или модулей для PostgreSQL).
- Сборка с использованием другой версии библиотеки, отличной от стандартной в ServBay.
- Внесение индивидуальных изменений в предоставляемые пакеты ServBay.
ServBay оснащён всем необходимым — средой для компиляции и инструментальной цепочкой, что позволяет пользователям удобно выполнять задачи по повторной сборке.
Для успешной повторной компиляции необходимо базовое понимание процесса сборки ПО в соответствующей операционной системе:
- macOS/Linux: такие инструменты Unix/Linux как
configure
,make
,make install
- Windows: экосистема сборки Visual Studio, MSBuild, cmake и др.
Предварительные условия
Перед началом повторной компиляции убедитесь, что выполнены следующие требования:
Установка ServBay Development Library: Это ключевая зависимость для повторной компиляции. Пакет содержит все необходимые библиотеки, заголовочные файлы и ресурсы развития для среды ServBay. Установить его можно через панель Пакеты в интерфейсе приложения ServBay.
Установка набора инструментов для разработки:
macOS
Установка Xcode Command Line Tools: Это базовый комплект инструментов для macOS, включающий компилятор (Clang), линкер и другие необходимые компоненты. Откройте Терминал и выполните команду:
bashxcode-select --install
1Если инструменты уже установлены — появится соответствующее уведомление.
Установка дополнительных средств компиляции: Для сборки большинства open-source программ нужно установить
autoconf
,automake
,libtool
и др. Обычно это делается через Homebrew:bashbrew install autoconf automake libtool cmake
1Если Homebrew ещё не установлен, следуйте инструкциям на официальном сайте Homebrew.
Windows
Установка Visual Studio Build Tools или Visual Studio Community: Для работы на Windows необходим компилятор Microsoft Visual C++ и инструменты сборки. Можно выбрать один из вариантов:
Вариант 1: Visual Studio Build Tools (рекомендуется, компактнее)
- Скачать и установить Visual Studio Build Tools
- При установке выберите рабочую нагрузку "C++ build tools"
- Убедитесь, что выбраны компоненты:
- MSVC v143 - VS 2022 C++ x64/x86
- Windows 11 SDK (последняя версия)
- Инструменты CMake
Вариант 2: Visual Studio Community
- Скачать и установить Visual Studio Community
- При установке выбрать рабочую нагрузку "Desktop development with C++"
- Убедиться, что установлены CMake и Windows SDK
Дополнительные инструменты: Для некоторых open-source проектов понадобится:
- Git for Windows — для получения исходников
- MSYS2 или vcpkg — для управления зависимостями из C/C++
- Python — для работы некоторых скриптов сборки
powershell# Установка дополнительных инструментов через chocolatey (по желанию) choco install git cmake python msys2
1
2
Настройка среды компиляции
После установки ServBay Development Library и других необходимых инструментов, нужно инициализировать среду компиляции. Это делается выставлением ряда переменных окружения, с помощью которых компилятор и система сборки будут знать, где находятся библиотеки, заголовки и бинарные файлы ServBay для правильного поиска зависимостей и корректного линкования.
В зависимости от ОС и архитектуры конфигурация окружения отличается:
macOS
Рабочая среда ServBay различается в зависимости от архитектуры процессора Mac: Intel (x86_64) или Apple Silicon (Arm64). Выберите команду инициализации среды в соответствии с текущей архитектурой runtime ServBay.
Windows
Версия ServBay для Windows поддерживает архитектуру x64 и устанавливается в директорию C:\ServBay
.
Проверка архитектуры CPU ServBay Runtime
macOS
Чтобы определить архитектуру, достаточно проверить любой исполняемый файл из директории bin
ServBay, например, с помощью bison
:
bash
# Выполните команду в терминале для проверки
$ file /Applications/ServBay/bin/bison
/Applications/ServBay/bin/bison: Mach-O 64-bit executable arm64
1
2
3
2
3
bash
# Выполните команду в терминале для проверки
$ file /Applications/ServBay/bin/bison
/Applications/ServBay/bin/bison: Mach-O 64-bit executable x86_64
1
2
3
2
3
Windows
Для Windows-версии ServBay архитектура — x64. Проверить исполняемый файл можно так:
powershell
# Проверка в PowerShell
PS> Get-Command "C:\ServBay\bin\bison.exe" | Select-Object -ExpandProperty FileVersionInfo | Select-Object ProductName, FileDescription
1
2
2
Либо посмотреть свойства файла в Проводнике.
После определения архитектуры выберите подходящий скрипт для инициализации среды.
Инициализация переменных среды для компиляции
В зависимости от вашей ОС и архитектуры используйте соответствующий скрипт:
macOS
Откройте новое окно терминала и скопируйте туда скрипт, соответствующий архитектуре вашего CPU. Скрипт настроит все необходимые пути и параметры для компиляции с помощью ServBay.
bash
# Задание количества ядер процессора для параллельной компиляции
CPU_NUMBER=$(sysctl -n hw.ncpu)
# Базовый путь установки ServBay
SERVBAY_BASE_FULL_PATH="/Applications/ServBay"
# Имя каталога пакетов
SERVBAY_PACKAGE_DIR_NAME="package"
# Полный путь к пакету
SERVBAY_PACKAGE_FULL_PATH="${SERVBAY_BASE_FULL_PATH}/${SERVBAY_PACKAGE_DIR_NAME}"
# Пути к бинарным файлам
SERVBAY_BIN_PATH="${SERVBAY_PACKAGE_FULL_PATH}/bin"
SERVBAY_SBIN_PATH="${SERVBAY_PACKAGE_FULL_PATH}/sbin"
# Путь к конфигурационным файлам
SERVBAY_ETC_PATH="${SERVBAY_PACKAGE_FULL_PATH}/etc"
# Путь к переменным данным
SERVBAY_VAR_PATH="${SERVBAY_PACKAGE_FULL_PATH}/var"
# Путь установки Development Library
SERVBAY_COMMON_PATH="${SERVBAY_PACKAGE_FULL_PATH}/common"
# Пути к заголовкам и библиотекам Development Library
SERVBAY_COMMON_INCLUDE_PATH="${SERVBAY_COMMON_PATH}/include"
SERVBAY_COMMON_LIB_PATH="${SERVBAY_COMMON_PATH}/lib"
SERVBAY_COMMON_LIBEXEC_PATH="${SERVBAY_COMMON_PATH}/libexec"
SERVBAY_COMMON_SHARE_PATH="${SERVBAY_COMMON_PATH}/share"
SERVBAY_COMMON_MAN_PATH="${SERVBAY_COMMON_PATH}/man"
SERVBAY_COMMON_DOC_PATH="${SERVBAY_COMMON_PATH}/doc"
# Текущая директория сборки
SERVBAY_BUILD_DIR=$(pwd)
SERVBAY_BUILD_SRC_DIR=${SERVBAY_BUILD_DIR}/src
# Данные о версии OpenSSL
OPENSSL_SELECTED_VERSION="3.2"
OPENSSL_VERSION="3.2.1"
# Минимальная версия macOS для сборки
BUILD_OS_MIN_VERSION="12.00" # macOS Monterey или новее
# Флаг архитектуры CPU для сборки
BUILD_CPU_ARCH="-arch arm64"
BUILD_CPU_ARCH_CMAKE="arm64"
BUILD_MACOS_TARGET="" # Обычно для Arm64 флаг -target не требуется
# Установить CFLAGS — уровень оптимизации, min macOS, архитектура
export CFLAGS="-Qunused-arguments -O3 -mmacosx-version-min=${BUILD_OS_MIN_VERSION} ${BUILD_CPU_ARCH} ${BUILD_MACOS_TARGET}"
# Установить LDFLAGS — rpath, пути к библиотекам, min macOS, архитектура
export LDFLAGS="-Wl,-rpath -Wl,${SERVBAY_COMMON_LIB_PATH} -L${SERVBAY_COMMON_LIB_PATH} -L${SERVBAY_PACKAGE_FULL_PATH} -mmacosx-version-min=${BUILD_OS_MIN_VERSION} ${BUILD_CPU_ARCH} ${BUILD_MACOS_TARGET}"
# Установить CPPFLAGS/CXXFLAGS — путь к заголовкам
export CPPFLAGS="-I${SERVBAY_COMMON_INCLUDE_PATH}"
export CXXFLAGS="-Qunused-arguments -O3 -mmacosx-version-min=${BUILD_OS_MIN_VERSION} ${BUILD_CPU_ARCH} ${BUILD_MACOS_TARGET}"
# Добавить bin/sbin ServBay в PATH
export PATH="${SERVBAY_BIN_PATH}:${SERVBAY_SBIN_PATH}:/usr/bin:/bin:/usr/sbin:/sbin:/Library/Apple/usr/bin"
# Пути pkg-config
export PKG_CONFIG_PATH="${SERVBAY_COMMON_LIB_PATH}/pkgconfig"
export PKG_CONFIG="${SERVBAY_BIN_PATH}/pkg-config"
export PKG_CONFIG_LIBDIR="${SERVBAY_COMMON_LIB_PATH}/pkgconfig"
export PATH=$PATH:"/usr/local/bin:/usr/local/sbin"
export PATH=$PATH:"/opt/homebrew/bin/" # Путь по умолчанию для Homebrew
# Добавить пути OpenSSL
export LDFLAGS="-L${SERVBAY_COMMON_PATH}/openssl/${OPENSSL_SELECTED_VERSION}/lib ${LDFLAGS}"
export CPPFLAGS="-I${SERVBAY_COMMON_PATH}/openssl/${OPENSSL_SELECTED_VERSION}/include ${CPPFLAGS}"
export PKG_CONFIG_PATH="${PKG_CONFIG_PATH}:${SERVBAY_COMMON_PATH}/openssl/${OPENSSL_SELECTED_VERSION}/lib/pkgconfig"
export PKG_CONFIG_LIBDIR="${PKG_CONFIG_LIBDIR}:${SERVBAY_COMMON_PATH}/openssl/${OPENSSL_SELECTED_VERSION}/lib/pkgconfig"
# После установки переменных можно компилировать в этом окне терминала
echo "Среда компиляции ServBay Arm64 настроена."
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
bash
# Задание количества ядер процессора для параллельной компиляции
CPU_NUMBER=$(sysctl -n hw.ncpu)
# Базовый путь установки ServBay
SERVBAY_BASE_FULL_PATH="/Applications/ServBay"
# Имя каталога пакетов
SERVBAY_PACKAGE_DIR_NAME="package"
# Полный путь к пакету
SERVBAY_PACKAGE_FULL_PATH="${SERVBAY_BASE_FULL_PATH}/${SERVBAY_PACKAGE_DIR_NAME}"
# Пути к бинарным файлам
SERVBAY_BIN_PATH="${SERVBAY_PACKAGE_FULL_PATH}/bin"
SERVBAY_SBIN_PATH="${SERVBAY_PACKAGE_FULL_PATH}/sbin"
# Путь к конфигурационным файлам
SERVBAY_ETC_PATH="${SERVBAY_PACKAGE_FULL_PATH}/etc"
# Путь к переменным данным
SERVBAY_VAR_PATH="${SERVBAY_PACKAGE_FULL_PATH}/var"
# Путь установки Development Library
SERVBAY_COMMON_PATH="${SERVBAY_PACKAGE_FULL_PATH}/common"
# Пути к заголовкам и библиотекам Development Library
SERVBAY_COMMON_INCLUDE_PATH="${SERVBAY_COMMON_PATH}/include"
SERVBAY_COMMON_LIB_PATH="${SERVBAY_COMMON_PATH}/lib"
SERVBAY_COMMON_LIBEXEC_PATH="${SERVBAY_COMMON_PATH}/libexec"
SERVBAY_COMMON_SHARE_PATH="${SERVBAY_COMMON_PATH}/share"
SERVBAY_COMMON_MAN_PATH="${SERVBAY_COMMON_PATH}/man"
SERVBAY_COMMON_DOC_PATH="${SERVBAY_COMMON_PATH}/doc"
# Текущая директория сборки
SERVBAY_BUILD_DIR=$(pwd)
SERVBAY_BUILD_SRC_DIR=${SERVBAY_BUILD_DIR}/src
# Данные о версии OpenSSL
OPENSSL_SELECTED_VERSION="1.1.1u"
OPENSSL_VERSION="1.1.1u"
# Минимальная версия macOS
BUILD_OS_MIN_VERSION="12.00" # macOS Monterey или новее
# Флаг архитектуры CPU
BUILD_CPU_ARCH="-arch x86_64"
BUILD_CPU_ARCH_CMAKE="x86_64"
# Флаг платформы (Intel требует указания)
BUILD_MACOS_TARGET="-target x86_64-apple-macos${BUILD_OS_MIN_VERSION}"
# Установить CFLAGS — уровень оптимизации, min macOS, архитектура, платформа
export CFLAGS="-Qunused-arguments -O3 -mmacosx-version-min=${BUILD_OS_MIN_VERSION} ${BUILD_CPU_ARCH} ${BUILD_MACOS_TARGET}"
# Установить LDFLAGS — rpath, пути к библиотекам, min macOS, архитектура, платформа
export LDFLAGS="-Wl,-rpath -Wl,${SERVBAY_COMMON_LIB_PATH} -L${SERVBAY_COMMON_LIB_PATH} -L${SERVBAY_PACKAGE_FULL_PATH} -mmacosx-version-min=${BUILD_OS_MIN_VERSION} ${BUILD_CPU_ARCH} ${BUILD_MACOS_TARGET}"
# CPPFLAGS/CXXFLAGS — путь к заголовкам
export CPPFLAGS="-I${SERVBAY_COMMON_INCLUDE_PATH}"
export CXXFLAGS="-Qunused-arguments -O3 -mmacosx-version-min=${BUILD_OS_MIN_VERSION} ${BUILD_CPU_ARCH} ${BUILD_MACOS_TARGET}"
# Добавить bin/sbin ServBay в PATH
export PATH="${SERVBAY_BIN_PATH}:${SERVBAY_SBIN_PATH}:/usr/bin:/bin:/usr/sbin:/sbin:/Library/Apple/usr/bin"
# Пути pkg-config
export PKG_CONFIG_PATH="${SERVBAY_COMMON_LIB_PATH}/pkgconfig"
export PKG_CONFIG="${SERVBAY_BIN_PATH}/pkg-config"
export PKG_CONFIG_LIBDIR="${SERVBAY_COMMON_LIB_PATH}/pkgconfig"
export PATH=$PATH:"/usr/local/bin:/usr/local/sbin"
export PATH=$PATH:"/opt/homebrew/bin/" # Путь по умолчанию Homebrew
# Добавить пути OpenSSL
export LDFLAGS="-L${SERVBAY_COMMON_PATH}/openssl/${OPENSSL_SELECTED_VERSION}/lib ${LDFLAGS}"
export CPPFLAGS="-I${SERVBAY_COMMON_PATH}/openssl/${OPENSSL_SELECTED_VERSION}/include ${CPPFLAGS}"
export PKG_CONFIG_PATH="${PKG_CONFIG_PATH}:${SERVBAY_COMMON_PATH}/openssl/${OPENSSL_SELECTED_VERSION}/lib/pkgconfig"
export PKG_CONFIG_LIBDIR="${PKG_CONFIG_LIBDIR}:${SERVBAY_COMMON_PATH}/openssl/${OPENSSL_SELECTED_VERSION}/lib/pkgconfig"
# После установки переменных можно компилировать в этом окне терминала
echo "Среда компиляции ServBay x86_64 настроена."
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
Windows
Для Windows среды переменные выставляются через PowerShell или Developer Command Prompt. Скрипт для x64:
powershell
# Задание количества ядер процессора для параллельной компиляции
$CPU_NUMBER = (Get-WmiObject -Class Win32_Processor).NumberOfLogicalProcessors
# Базовый путь установки ServBay (Windows)
$SERVBAY_BASE_FULL_PATH = "C:\ServBay"
# Имя пакета
$SERVBAY_PACKAGE_DIR_NAME = "package"
# Полный путь к пакету
$SERVBAY_PACKAGE_FULL_PATH = "${SERVBAY_BASE_FULL_PATH}\${SERVBAY_PACKAGE_DIR_NAME}"
# Пути к бинарным, конфигурационным и данным
$SERVBAY_BIN_PATH = "${SERVBAY_PACKAGE_FULL_PATH}\bin"
$SERVBAY_SBIN_PATH = "${SERVBAY_PACKAGE_FULL_PATH}\sbin"
$SERVBAY_ETC_PATH = "${SERVBAY_PACKAGE_FULL_PATH}\etc"
$SERVBAY_VAR_PATH = "${SERVBAY_PACKAGE_FULL_PATH}\var"
# Пути ServBay Development Library
$SERVBAY_COMMON_PATH = "${SERVBAY_PACKAGE_FULL_PATH}\common"
$SERVBAY_COMMON_INCLUDE_PATH = "${SERVBAY_COMMON_PATH}\include"
$SERVBAY_COMMON_LIB_PATH = "${SERVBAY_COMMON_PATH}\lib"
$SERVBAY_COMMON_LIBEXEC_PATH = "${SERVBAY_COMMON_PATH}\libexec"
$SERVBAY_COMMON_SHARE_PATH = "${SERVBAY_COMMON_PATH}\share"
$SERVBAY_COMMON_DOC_PATH = "${SERVBAY_COMMON_PATH}\doc"
# Текущая директория сборки
$SERVBAY_BUILD_DIR = Get-Location
$SERVBAY_BUILD_SRC_DIR = "${SERVBAY_BUILD_DIR}\src"
# Данные о OpenSSL (Windows)
$OPENSSL_SELECTED_VERSION = "3.2"
$OPENSSL_VERSION = "3.2.1"
# Конфигурация сборки
$BUILD_PLATFORM = "x64"
$BUILD_CONFIG = "Release"
# Установка переменных окружения
$env:SERVBAY_BASE_FULL_PATH = $SERVBAY_BASE_FULL_PATH
$env:SERVBAY_COMMON_PATH = $SERVBAY_COMMON_PATH
$env:SERVBAY_COMMON_INCLUDE_PATH = $SERVBAY_COMMON_INCLUDE_PATH
$env:SERVBAY_COMMON_LIB_PATH = $SERVBAY_COMMON_LIB_PATH
# Добавить bin/sbin ServBay в PATH
$env:PATH = "${SERVBAY_BIN_PATH};${SERVBAY_SBIN_PATH};$env:PATH"
# Установка переменных для компилятора
$env:INCLUDE = "${SERVBAY_COMMON_INCLUDE_PATH};$env:INCLUDE"
$env:LIB = "${SERVBAY_COMMON_LIB_PATH};$env:LIB"
$env:LIBPATH = "${SERVBAY_COMMON_LIB_PATH};$env:LIBPATH"
# Настройки для pkg-config (если доступно)
$env:PKG_CONFIG_PATH = "${SERVBAY_COMMON_LIB_PATH}\pkgconfig"
# Добавить пути OpenSSL
$env:INCLUDE = "${SERVBAY_COMMON_PATH}\openssl\${OPENSSL_SELECTED_VERSION}\include;$env:INCLUDE"
$env:LIB = "${SERVBAY_COMMON_PATH}\openssl\${OPENSSL_SELECTED_VERSION}\lib;$env:LIB"
# CMAKE переменные
$env:CMAKE_PREFIX_PATH = $SERVBAY_COMMON_PATH
$env:CMAKE_INSTALL_PREFIX = $SERVBAY_COMMON_PATH
# Завершение настройки среды
Write-Host "Среда компиляции ServBay Windows x64 настроена."
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
Для пользователей Developer Command Prompt можно использовать batch-скрипт:
batch
@echo off
REM Настройка среды компиляции ServBay для Windows
REM Базовый путь установки ServBay
set SERVBAY_BASE_FULL_PATH=C:\ServBay
set SERVBAY_PACKAGE_FULL_PATH=%SERVBAY_BASE_FULL_PATH%\package
REM Пути ServBay
set SERVBAY_BIN_PATH=%SERVBAY_PACKAGE_FULL_PATH%\bin
set SERVBAY_COMMON_PATH=%SERVBAY_PACKAGE_FULL_PATH%\common
set SERVBAY_COMMON_INCLUDE_PATH=%SERVBAY_COMMON_PATH%\include
set SERVBAY_COMMON_LIB_PATH=%SERVBAY_COMMON_PATH%\lib
REM Версия OpenSSL
set OPENSSL_SELECTED_VERSION=3.2
REM Установка переменных среды
set PATH=%SERVBAY_BIN_PATH%;%PATH%
set INCLUDE=%SERVBAY_COMMON_INCLUDE_PATH%;%SERVBAY_COMMON_PATH%\openssl\%OPENSSL_SELECTED_VERSION%\include;%INCLUDE%
set LIB=%SERVBAY_COMMON_LIB_PATH%;%SERVBAY_COMMON_PATH%\openssl\%OPENSSL_SELECTED_VERSION%\lib;%LIB%
set CMAKE_PREFIX_PATH=%SERVBAY_COMMON_PATH%
echo Среда компиляции ServBay Windows настроена.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
Важно: Эти переменные действуют только внутри текущего терминала. После закрытия или открытия нового окна их нужно заново применять.
Примеры компиляции
После настройки среды компиляции, вы можете загружать исходные коды и собирать их — ниже представлены типовые кроссплатформенные сценарии.
Сборка ImageMagick
ImageMagick — мощная библиотека для обработки изображений, необходимая для расширения PHP imagick
. В ServBay она уже установлена, но пример ориентирован на демонстрацию процесса сборки через ServBay.
macOS / Linux
Загрузить исходники ImageMagick и распаковать:
bash# Замените на актуальную версию wget https://imagemagick.org/archive/releases/ImageMagick-7.1.1-33.tar.gz tar zxvf ImageMagick-7.1.1-33.tar.gz cd ImageMagick-7.1.1-33
1
2
3
4Запустить скрипт
./configure
: Используйте ранее настроенные переменные среды. Опции--prefix
,--libdir
,--includedir
и другие указывают ServBay Development Library как место установки, чтобы библиотеки и заголовки были доступны другим программам (например, расширению PHPimagick
). Остальные параметры — специфичные для ImageMagick.bash./configure \ --prefix=${SERVBAY_COMMON_PATH} \ --libdir=${SERVBAY_COMMON_LIB_PATH} \ --includedir=${SERVBAY_COMMON_INCLUDE_PATH} \ --oldincludedir=${SERVBAY_COMMON_INCLUDE_PATH} \ --bindir=${SERVBAY_BIN_PATH} \ --sbindir=${SERVBAY_SBIN_PATH} \ --sysconfdir=${SERVBAY_ETC_PATH} \ --datarootdir=${SERVBAY_COMMON_SHARE_PATH} \ --enable-osx-universal-binary=no \ --disable-silent-rules \ --disable-opencl \ --enable-shared \ --enable-static \ --with-freetype=yes \ --with-gvc=no \ --with-modules \ --with-webp=yes \ --with-heic=no \ --without-gslib \ --with-fpx=no \ --without-openexexr \ --with-raw=yes \ --without-lqr \ --without-djvu \ --without-fftw \ --without-pango \ --without-wmf \ --without-x \ --with-gs-font-dir=${SERVBAY_COMMON_SHARE_PATH}/ghostscript/10.02.1/Resource/Font
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30Выполнить
make
иmake install
:make
соберёт бинарные файлы и библиотеки, флаг-j ${CPU_NUMBER}
ускоряет сборку на многоядерных системах.make install
установит всё в каталог, заданный через--prefix
.bashmake -j ${CPU_NUMBER} make install
1
2
Windows
В Windows ImageMagick лучше собирать с помощью Visual Studio или CMake. Процесс чуть сложнее; лучше использовать CMake:
Скачать исходники ImageMagick:
powershell# Загрузка через curl или браузер curl -O https://imagemagick.org/archive/releases/ImageMagick-7.1.1-33.tar.gz # Распаковка (нужен 7zip или подобный инструмент) tar -xzf ImageMagick-7.1.1-33.tar.gz cd ImageMagick-7.1.1-33
1
2
3
4
5Конфигурация через CMake:
powershell# Создание каталога сборки mkdir builddir cd builddir # Конфигурирование CMake cmake .. ` -DCMAKE_INSTALL_PREFIX="$env:SERVBAY_COMMON_PATH" ` -DCMAKE_BUILD_TYPE=Release ` -DBUILD_SHARED_LIBS=ON ` -DMAGICKCORE_QUANTUM_DEPTH=16 ` -DMAGICKCORE_HDRI_ENABLE=OFF ` -DWITH_BZLIB=ON ` -DWITH_ZLIB=ON ` -DWITH_PNG=ON ` -DWITH_JPEG=ON ` -DWITH_TIFF=ON ` -DWITH_FREETYPE=ON ` -DWITH_WEBP=ON
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18Сборка и установка:
powershell# Сборка cmake --build . --config Release --parallel $CPU_NUMBER # Установка cmake --install . --config Release
1
2
3
4
Сборка программных пакетов через cmake
Для пакетов, использующих сборку на базе cmake
, процесс во всех ОС примерно одинаков. Например, для protobuf
(Protocol Buffers):
- Скачать исходники protobuf и перейти в каталог.
macOS / Linux
Конфигурировать проект через cmake:
-S .
— исходный каталог,-B builddir
— каталог сборки. Параметр-DCMAKE_INSTALL_PREFIX
и другие определяют пути установки в ServBay Development Library. Служебные переменные типа-DCMAKE_MACOSX_RPATH
позволяют корректно находить зависимости.bash# Предварительно войти в каталог источников protobuf cmake -S . -B builddir \ -DCMAKE_INSTALL_PREFIX=${SERVBAY_COMMON_PATH} \ -DCMAKE_INSTALL_LIBDIR=${SERVBAY_COMMON_LIB_PATH} \ -DCMAKE_INSTALL_INCLUDEDIR=${SERVBAY_COMMON_INCLUDE_PATH} \ -DCMAKE_INSTALL_BINDIR=${SERVBAY_BIN_PATH} \ -DCMAKE_INSTALL_SBINDIR=${SERVBAY_SBIN_PATH} \ -DCMAKE_INSTALL_SYSCONFDIR=${SERVBAY_ETC_PATH} \ -DCMAKE_INSTALL_DATAROOTDIR=${SERVBAY_COMMON_SHARE_PATH} \ -DCMAKE_MACOSX_RPATH=1 \ -DCMAKE_INSTALL_RPATH=${SERVBAY_COMMON_LIB_PATH} \ -DCMAKE_BUILD_WITH_INSTALL_RPATH=TRUE \ -DCMAKE_PREFIX_PATH=${SERVBAY_COMMON_PATH} \ -DBUILD_SHARED_LIBS=ON \ -Dprotobuf_BUILD_LIBPROTOC=ON \ -Dprotobuf_BUILD_SHARED_LIBS=ON \ -Dprotobuf_INSTALL_EXAMPLES=OFF \ -Dprotobuf_BUILD_TESTS=OFF \ -Dprotobuf_ABSL_PROVIDER=package \ -Dprotobuf_JSONCPP_PROVIDER=module \ -DCMAKE_CXX_STANDARD=17
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21Выполнить сборку и установку:
bashcmake --build builddir -j ${CPU_NUMBER} cmake --install builddir
1
2
Windows
Конфигурировать проект через cmake:
powershell# Предварительно войти в каталог источников protobuf cmake -S . -B builddir ` -DCMAKE_INSTALL_PREFIX="$env:SERVBAY_COMMON_PATH" ` -DCMAKE_BUILD_TYPE=Release ` -DCMAKE_PREFIX_PATH="$env:SERVBAY_COMMON_PATH" ` -DBUILD_SHARED_LIBS=ON ` -Dprotobuf_BUILD_LIBPROTOC=ON ` -Dprotobuf_BUILD_SHARED_LIBS=ON ` -Dprotobuf_INSTALL_EXAMPLES=OFF ` -Dprotobuf_BUILD_TESTS=OFF ` -Dprotobuf_MSVC_STATIC_RUNTIME=OFF ` -DCMAKE_CXX_STANDARD=17
1
2
3
4
5
6
7
8
9
10
11
12Выполнить компиляцию и установку:
powershell# Компиляция cmake --build builddir --config Release --parallel $CPU_NUMBER # Установка cmake --install builddir --config Release
1
2
3
4
Сборка модулей PHP
Для сборки дополнительных модулей PHP (например, swoole
, redis
, mongodb
) для конкретной версии PHP в ServBay — обратитесь к специализированной инструкции:
Инструкция по сборке модулей PHP
Сборка модулей PostgreSQL
Для сборки модулей для конкретной версии PostgreSQL в ServBay — используйте отдельное руководство:
Инструкция по сборке модулей PostgreSQL
Итоги
Благодаря ServBay Development Library и гибко настраиваемым переменным среды разработчикам удобно выполнять повторную компиляцию и кастомизацию пакетов на платформах macOS и Windows. Это открывает широкие возможности для реализации требований конкретного проекта или внедрения новейших версий библиотек.
Основные моменты
- Кроссплатформенность: ServBay поддерживает среду компиляции и для macOS, и для Windows
- Различия путей: macOS —
/Applications/ServBay
, Windows —C:\ServBay
- Отличие инструментов: macOS — Xcode Command Line Tools, Windows — Visual Studio Build Tools
- Настройка окружения: Используйте подходящий скрипт для вашей платформы
Важные замечания
- Перед компиляцией внимательно изучайте официальные рекомендации по сборке пакетов
- Настраивайте шаги в соответствии с особенностями своей платформы
- Для Windows предпочтительнее использовать CMake
- Некоторые open-source проекты могут требовать специфической сборки и зависимостей для разных платформ
Следуя данному руководству, вы сможете успешно собирать программные пакеты в среде ServBay на обеих платформах.