Ponowna kompilacja za pomocą ServBay
ServBay oferuje użytkownikom macOS i Windows potężne oraz pełne lokalne środowisko programistyczne dla stron WWW, zawierające bogaty zestaw pakietów i narzędzi. Oprócz preinstalowanych pakietów ServBay, czasami programista może potrzebować przeprowadzić własną kompilację, na przykład:
- Włączanie specyficznych opcji kompilacji dla wybranego pakietu.
- Dodawanie modułów lub rozszerzeń, które nie są domyślnie zawarte w ServBay (np. nowy moduł PHP lub rozszerzenie dla PostgreSQL).
- Kompilacja z użyciem bibliotek w wersji innej niż ta domyślna w ServBay.
- Dostosowanie dostarczonych pakietów do indywidualnych wymagań.
ServBay zapewnia kompletne środowisko kompilacji i narzędzi, które umożliwiają wygodne wykonanie takich zadań.
Aby proces kompilacji przebiegł pomyślnie, warto znać podstawy kompilowania oprogramowania na wybranym systemie operacyjnym:
- macOS/Linux: narzędzia Unix/Linux tj.
configure
,make
,make install
itp. - Windows: system budowania Visual Studio, MSBuild, cmake i inne środowiska kompilacji
Wymagania wstępne
Przed rozpoczęciem ponownej kompilacji upewnij się, że spełniasz poniższe warunki:
Instalacja ServBay Development Library: To kluczowy pakiet wymagany do ponownej kompilacji. Pakiet zawiera wszystkie potrzebne biblioteki i pliki nagłówkowe. Znajdziesz go i zainstalujesz w panelu Pakiety aplikacji ServBay.
Instalacja zestawów narzędzi developerskich:
macOS
Instalacja Xcode Command Line Tools: Podstawowy zestaw narzędzi developerskich dla macOS, zawierający kompilator (Clang), linker i inne kluczowe narzędzia. Otwórz terminal i wpisz:
bashxcode-select --install
1Jeśli narzędzie jest już zainstalowane, pojawi się stosowny komunikat.
Instalacja dodatkowych narzędzi kompilacji: Większość projektów open-source wymaga także narzędzi
autoconf
,automake
,libtool
itp., które najłatwiej zainstalować za pomocą menedżera Homebrew:bashbrew install autoconf automake libtool cmake
1Jeżeli nie masz zainstalowanego Homebrew, odwiedź stronę oficjalną, aby zapoznać się z instrukcją instalacji.
Windows
Instalacja Visual Studio Build Tools lub Visual Studio Community: Windows wymaga kompilatora Microsoft Visual C++ i odpowiednich narzędzi. Możesz wybrać:
Opcja 1: Visual Studio Build Tools (polecane, mniejszy rozmiar)
- Pobierz i zainstaluj Visual Studio Build Tools
- W trakcie instalacji wybierz workload "C++ build tools"
- Upewnij się, że masz:
- MSVC v143 - VS 2022 C++ x64/x86 Build Tools
- Windows 11 SDK (najaktualniejsza wersja)
- Narzędzie CMake
Opcja 2: Visual Studio Community
- Pobierz i zainstaluj Visual Studio Community
- Wybierz workload "Desktop development with C++"
- Upewnij się, że narzędzia CMake oraz Windows SDK są zainstalowane
Dodatkowe narzędzia: Niektóre projekty mogą wymagać:
- Git for Windows: do pobierania kodu źródłowego
- MSYS2 lub vcpkg: do zarządzania zależnościami dla C/C++
- Python: potrzebny do niektórych skryptów budowy
powershell# Instalacja dodatkowych narzędzi przez chocolatey (opcjonalnie) choco install git cmake python msys2
1
2
Konfiguracja środowiska kompilacji
Po zainstalowaniu ServBay Development Library oraz wszystkich wymaganych narzędzi, należy zainicjować środowisko kompilacji. Ten krok polega na ustawieniu zmiennych środowiskowych, dzięki którym kompilator oraz system budowania odnajdzie biblioteki, pliki nagłówkowe i pliki binarne ServBay.
W zależności od systemu operacyjnego i architektury CPU, konfiguracja środowiska będzie różna:
macOS
Środowisko ServBay na Macu rozróżnia architekturę Intel (x86_64) oraz Apple Silicon (Arm64). Należy wybrać skrypt inicjalizujący zgodnie z bieżącą architekturą ServBay Runtime.
Windows
ServBay dla Windows wspiera architekturę x64 i instalowany jest domyślnie w katalogu C:\ServBay
.
Jak sprawdzić architekturę CPU ServBay Runtime
macOS
Możesz sprawdzić architekturę dowolnego pliku wykonywalnego z katalogu bin
ServBay. Przykład dla pliku bison
:
bash
# Sprawdzenie w terminalu
$ file /Applications/ServBay/bin/bison
/Applications/ServBay/bin/bison: Mach-O 64-bit executable arm64
1
2
3
2
3
bash
# Sprawdzenie w terminalu
$ file /Applications/ServBay/bin/bison
/Applications/ServBay/bin/bison: Mach-O 64-bit executable x86_64
1
2
3
2
3
Windows
Wersja ServBay na Windows wspiera architekturę x64. Sprawdzisz to w PowerShell:
powershell
# Sprawdzenie w PowerShell
PS> Get-Command "C:\ServBay\bin\bison.exe" | Select-Object -ExpandProperty FileVersionInfo | Select-Object ProductName, FileDescription
1
2
2
Możesz również sprawdzić właściwości pliku.
Po potwierdzeniu architektury, wybierz odpowiedni skrypt inicjujący środowisko.
Inicjalizacja zmiennych środowiskowych do kompilacji
W zależności od systemu operacyjnego i architektury CPU wybierz poniższy skrypt inicjalizacyjny:
macOS
Otwórz nowe okno terminala i wklej skrypt właściwy dla architektury swojego CPU. Skrypt ustawi potrzebne flagi oraz ścieżki dla kompilacji w środowisku ServBay.
bash
# Liczba rdzeni CPU do kompilacji równoległej
CPU_NUMBER=$(sysctl -n hw.ncpu)
# Podstawowa ścieżka instalacyjna ServBay
SERVBAY_BASE_FULL_PATH="/Applications/ServBay"
# Nazwa katalogu pakietów
SERVBAY_PACKAGE_DIR_NAME="package"
# Pełna ścieżka do pakietów
SERVBAY_PACKAGE_FULL_PATH="${SERVBAY_BASE_FULL_PATH}/${SERVBAY_PACKAGE_DIR_NAME}"
# Ścieżka do plików binarnych ServBay
SERVBAY_BIN_PATH="${SERVBAY_PACKAGE_FULL_PATH}/bin"
SERVBAY_SBIN_PATH="${SERVBAY_PACKAGE_FULL_PATH}/sbin"
# Ścieżka do plików konfiguracyjnych ServBay
SERVBAY_ETC_PATH="${SERVBAY_PACKAGE_FULL_PATH}/etc"
# Ścieżka do plików zmiennych ServBay
SERVBAY_VAR_PATH="${SERVBAY_PACKAGE_FULL_PATH}/var"
# Ścieżka instalacji ServBay Development Library
SERVBAY_COMMON_PATH="${SERVBAY_PACKAGE_FULL_PATH}/common"
# Ścieżka do nagłówków ServBay Development Library
SERVBAY_COMMON_INCLUDE_PATH="${SERVBAY_COMMON_PATH}/include"
# Ścieżka do bibliotek ServBay Development Library
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"
# Bieżący katalog budowy
SERVBAY_BUILD_DIR=$(pwd)
SERVBAY_BUILD_SRC_DIR=${SERVBAY_BUILD_DIR}/src
# Informacje o wersji OpenSSL
OPENSSL_SELECTED_VERSION="3.2"
OPENSSL_VERSION="3.2.1"
# Minimalna wersja systemu docelowego
BUILD_OS_MIN_VERSION="12.00" # macOS Monterey lub nowszy
# Flaga architektury CPU
BUILD_CPU_ARCH="-arch arm64"
BUILD_CPU_ARCH_CMAKE="arm64"
BUILD_MACOS_TARGET="" # Arm64 zwykle nie wymaga flagi -target
# Flagi kompilatora C: poziom optymalizacji, minimalna wersja macOS, architektura
export CFLAGS="-Qunused-arguments -O3 -mmacosx-version-min=${BUILD_OS_MIN_VERSION} ${BUILD_CPU_ARCH} ${BUILD_MACOS_TARGET}"
# Flagi linkera: rpath, ścieżki do bibliotek (-L), minimalna wersja macOS, architektura
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}"
# Flagi preprocesora C i kompilatora CXX: ścieżka do nagłówków (-I)
export CPPFLAGS="-I${SERVBAY_COMMON_INCLUDE_PATH}"
# Flagi kompilatora C++: jak CFLAGS
export CXXFLAGS="-Qunused-arguments -O3 -mmacosx-version-min=${BUILD_OS_MIN_VERSION} ${BUILD_CPU_ARCH} ${BUILD_MACOS_TARGET}"
# Priorytet w PATH: bin/sbin ServBay
export PATH="${SERVBAY_BIN_PATH}:${SERVBAY_SBIN_PATH}:/usr/bin:/bin:/usr/sbin:/sbin:/Library/Apple/usr/bin"
# Ścieżka pkg-config: do wyszukiwania bibliotek
export PKG_CONFIG_PATH="${SERVBAY_COMMON_LIB_PATH}/pkgconfig"
# Lokalizacja narzędzia pkg-config
export PKG_CONFIG="${SERVBAY_BIN_PATH}/pkg-config"
# Lokalizacja katalogu pkg-config
export PKG_CONFIG_LIBDIR="${SERVBAY_COMMON_LIB_PATH}/pkgconfig"
# Dodanie bin/sbin systemowych i Homebrew do PATH
export PATH=$PATH:"/usr/local/bin:/usr/local/sbin"
export PATH=$PATH:"/opt/homebrew/bin/" # Domyślna ścieżka Homebrew
# Dodaj ścieżki do bibliotek i nagłówków OpenSSL do LDFLAGS i CPPFLAGS
export LDFLAGS="-L${SERVBAY_COMMON_PATH}/openssl/${OPENSSL_SELECTED_VERSION}/lib ${LDFLAGS}"
export CPPFLAGS="-I${SERVBAY_COMMON_PATH}/openssl/${OPENSSL_SELECTED_VERSION}/include ${CPPFLAGS}"
# Dodaj ścieżkę pkg-config OpenSSL
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"
# Po ustawieniu zmiennych środowiskowych można przystąpić do kompilacji
echo "Kompilacyjne środowisko ServBay Arm64 zostało skonfigurowane."
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
64
65
66
67
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
64
65
66
67
bash
# Liczba rdzeni CPU do kompilacji równoległej
CPU_NUMBER=$(sysctl -n hw.ncpu)
# Podstawowa ścieżka instalacyjna ServBay
SERVBAY_BASE_FULL_PATH="/Applications/ServBay"
# Nazwa katalogu pakietów
SERVBAY_PACKAGE_DIR_NAME="package"
# Pełna ścieżka do pakietów
SERVBAY_PACKAGE_FULL_PATH="${SERVBAY_BASE_FULL_PATH}/${SERVBAY_PACKAGE_DIR_NAME}"
# Ścieżka do plików binarnych ServBay
SERVBAY_BIN_PATH="${SERVBAY_PACKAGE_FULL_PATH}/bin"
SERVBAY_SBIN_PATH="${SERVBAY_PACKAGE_FULL_PATH}/sbin"
# Ścieżka do plików konfiguracyjnych ServBay
SERVBAY_ETC_PATH="${SERVBAY_PACKAGE_FULL_PATH}/etc"
# Ścieżka do plików zmiennych ServBay
SERVBAY_VAR_PATH="${SERVBAY_PACKAGE_FULL_PATH}/var"
# Ścieżka instalacji ServBay Development Library
SERVBAY_COMMON_PATH="${SERVBAY_PACKAGE_FULL_PATH}/common"
# Ścieżka do nagłówków ServBay Development Library
SERVBAY_COMMON_INCLUDE_PATH="${SERVBAY_COMMON_PATH}/include"
# Ścieżka do bibliotek ServBay Development Library
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"
# Bieżący katalog budowy
SERVBAY_BUILD_DIR=$(pwd)
SERVBAY_BUILD_SRC_DIR=${SERVBAY_BUILD_DIR}/src
# Informacje o wersji OpenSSL
OPENSSL_SELECTED_VERSION="1.1.1u"
OPENSSL_VERSION="1.1.1u"
# Minimalna wersja systemu docelowego
BUILD_OS_MIN_VERSION="12.00" # macOS Monterey lub nowszy
# Flaga architektury CPU
BUILD_CPU_ARCH="-arch x86_64"
BUILD_CPU_ARCH_CMAKE="x86_64"
# Flaga docelowej platformy (Intel wymaga -target)
BUILD_MACOS_TARGET="-target x86_64-apple-macos${BUILD_OS_MIN_VERSION}"
# Flagi kompilatora C: poziom optymalizacji, minimalna wersja macOS, architektura, platforma docelowa
export CFLAGS="-Qunused-arguments -O3 -mmacosx-version-min=${BUILD_OS_MIN_VERSION} ${BUILD_CPU_ARCH} ${BUILD_MACOS_TARGET}"
# Flagi linkera: rpath, ścieżki do bibliotek (-L), minimalna wersja macOS, architektura, platforma docelowa
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}"
# Flagi preprocesora C i kompilatora CXX: ścieżka do nagłówków (-I)
export CPPFLAGS="-I${SERVBAY_COMMON_INCLUDE_PATH}"
# Flagi kompilatora C++: jak CFLAGS
export CXXFLAGS="-Qunused-arguments -O3 -mmacosx-version-min=${BUILD_OS_MIN_VERSION} ${BUILD_CPU_ARCH} ${BUILD_MACOS_TARGET}"
# Priorytet w PATH: bin/sbin ServBay
export PATH="${SERVBAY_BIN_PATH}:${SERVBAY_SBIN_PATH}:/usr/bin:/bin:/usr/sbin:/sbin:/Library/Apple/usr/bin"
# Ścieżka pkg-config: do wyszukiwania bibliotek
export PKG_CONFIG_PATH="${SERVBAY_COMMON_LIB_PATH}/pkgconfig"
# Lokalizacja narzędzia pkg-config
export PKG_CONFIG="${SERVBAY_BIN_PATH}/pkg-config"
# Lokalizacja katalogu pkg-config
export PKG_CONFIG_LIBDIR="${SERVBAY_COMMON_LIB_PATH}/pkgconfig"
# Dodanie bin/sbin systemowych i Homebrew do PATH
export PATH=$PATH:"/usr/local/bin:/usr/local/sbin"
export PATH=$PATH:"/opt/homebrew/bin/" # Domyślna ścieżka Homebrew
# Dodaj ścieżki do bibliotek i nagłówków OpenSSL do LDFLAGS i CPPFLAGS
export LDFLAGS="-L${SERVBAY_COMMON_PATH}/openssl/${OPENSSL_SELECTED_VERSION}/lib ${LDFLAGS}"
export CPPFLAGS="-I${SERVBAY_COMMON_PATH}/openssl/${OPENSSL_SELECTED_VERSION}/include ${CPPFLAGS}"
# Dodaj ścieżkę pkg-config OpenSSL
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"
# Po ustawieniu zmiennych środowiskowych można przystąpić do kompilacji
echo "Kompilacyjne środowisko ServBay x86_64 zostało skonfigurowane."
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
64
65
66
67
68
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
64
65
66
67
68
Windows
Na platformie Windows, zmienne środowiskowe można ustawić w PowerShellu lub Developer Command Prompt. Poniższy skrypt dedykowany jest architekturze x64:
powershell
# Liczba rdzeni CPU do kompilacji równoległej
$CPU_NUMBER = (Get-WmiObject -Class Win32_Processor).NumberOfLogicalProcessors
# Podstawowa ścieżka instalacyjna ServBay (Windows)
$SERVBAY_BASE_FULL_PATH = "C:\ServBay"
# Nazwa katalogu pakietów
$SERVBAY_PACKAGE_DIR_NAME = "package"
# Pełna ścieżka do pakietów
$SERVBAY_PACKAGE_FULL_PATH = "${SERVBAY_BASE_FULL_PATH}\${SERVBAY_PACKAGE_DIR_NAME}"
# Ścieżka do plików binarnych ServBay
$SERVBAY_BIN_PATH = "${SERVBAY_PACKAGE_FULL_PATH}\bin"
$SERVBAY_SBIN_PATH = "${SERVBAY_PACKAGE_FULL_PATH}\sbin"
# Ścieżka do plików konfiguracyjnych ServBay
$SERVBAY_ETC_PATH = "${SERVBAY_PACKAGE_FULL_PATH}\etc"
# Ścieżka do plików zmiennych ServBay
$SERVBAY_VAR_PATH = "${SERVBAY_PACKAGE_FULL_PATH}\var"
# Ścieżka instalacji ServBay Development Library
$SERVBAY_COMMON_PATH = "${SERVBAY_PACKAGE_FULL_PATH}\common"
# Ścieżka do nagłówków ServBay Development Library
$SERVBAY_COMMON_INCLUDE_PATH = "${SERVBAY_COMMON_PATH}\include"
# Ścieżka do bibliotek ServBay Development Library
$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"
# Bieżący katalog budowy
$SERVBAY_BUILD_DIR = Get-Location
$SERVBAY_BUILD_SRC_DIR = "${SERVBAY_BUILD_DIR}\src"
# Informacje o wersji OpenSSL (Windows)
$OPENSSL_SELECTED_VERSION = "3.2"
$OPENSSL_VERSION = "3.2.1"
# Konfiguracja kompilacji Windows
$BUILD_PLATFORM = "x64"
$BUILD_CONFIG = "Release"
# Ustawienie zmiennych środowiskowych
$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
# Priorytet w PATH: bin/sbin ServBay
$env:PATH = "${SERVBAY_BIN_PATH};${SERVBAY_SBIN_PATH};$env:PATH"
# Konfiguracja kompilatora
$env:INCLUDE = "${SERVBAY_COMMON_INCLUDE_PATH};$env:INCLUDE"
$env:LIB = "${SERVBAY_COMMON_LIB_PATH};$env:LIB"
$env:LIBPATH = "${SERVBAY_COMMON_LIB_PATH};$env:LIBPATH"
# Konfiguracja pkg-config (jeśli dostępna)
$env:PKG_CONFIG_PATH = "${SERVBAY_COMMON_LIB_PATH}\pkgconfig"
# Dodanie ścieżek do bibliotek i nagłówków 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"
# Konfiguracja CMAKE
$env:CMAKE_PREFIX_PATH = $SERVBAY_COMMON_PATH
$env:CMAKE_INSTALL_PREFIX = $SERVBAY_COMMON_PATH
# Zakończono konfigurację zmiennych środowiskowych
Write-Host "Kompilacyjne środowisko ServBay Windows x64 zostało skonfigurowane."
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
64
65
66
67
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
64
65
66
67
Użytkownicy Developer Command Prompt mogą także użyć skryptu wsadowego:
batch
@echo off
REM Konfiguracja środowiska kompilacyjnego ServBay Windows
REM Podstawowa ścieżka instalacyjna ServBay
set SERVBAY_BASE_FULL_PATH=C:\ServBay
set SERVBAY_PACKAGE_FULL_PATH=%SERVBAY_BASE_FULL_PATH%\package
REM Ścieżki 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 Wersja OpenSSL
set OPENSSL_SELECTED_VERSION=3.2
REM Ustawienie zmiennych środowiskowych
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 Środowisko kompilacyjne ServBay Windows zostało skonfigurowane.
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
Ważna uwaga: Zmienne środowiskowe są aktywne tylko w bieżącej sesji terminala. Po zamknięciu lub otwarciu nowego okna, należy ponownie wykonać wybrany skrypt.
Przykłady kompilacji
Po konfiguracji środowiska w terminalu możesz pobierać kod źródłowy i kompilować go. Oto przykłady cross-platformowej kompilacji.
Kompilacja ImageMagick
ImageMagick to zaawansowana biblioteka do obróbki grafiki, wymagana przez rozszerzenie PHP imagick
. ServBay instaluje ją domyślnie i zwykle nie trzeba jej kompilować ręcznie. Przykład służy pokazaniu procesu w środowisku ServBay.
macOS / Linux
Pobierz i rozpakuj obecną wersję ImageMagick:
bash# Użyj najnowszego numeru wersji 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
4Uruchom skrypt
./configure
: Z użyciem skonfigurowanych zmiennych środowiskowych, wskazując ścieżki do ServBay Development Library w opcjach--prefix
,--libdir
,--includedir
itd. Pozwoli to innym pakietom na korzystanie z biblioteki 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
30Kompilacja i instalacja: Kompilacja (
make -j ${CPU_NUMBER}
) przyspiesza proces na wielordzeniowych CPU, amake install
umieszcza wynik w katalogu ServBay Development Library.bashmake -j ${CPU_NUMBER} make install
1
2
Windows
Na Windowsie najlepiej użyć Visual Studio lub CMake. Kompilacja przez CMake wygląda następująco:
Pobierz źródła ImageMagick:
powershell# Pobierz przez curl lub lokalnie przez przeglądarkę curl -O https://imagemagick.org/archive/releases/ImageMagick-7.1.1-33.tar.gz # Rozpakuj archiwum (potrzebny 7zip lub inne narzędzie) tar -xzf ImageMagick-7.1.1-33.tar.gz cd ImageMagick-7.1.1-33
1
2
3
4
5Konfiguracja przez CMake (w Developer Command Prompt lub PowerShell):
powershell# Katalog budowy mkdir builddir cd builddir # Konfiguracja projektu przez 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
18Kompilacja i instalacja:
powershell# Kompilacja cmake --build . --config Release --parallel $CPU_NUMBER # Instalacja cmake --install . --config Release
1
2
3
4
Kompilacja pakietów przez cmake
Pakiety korzystające z systemu cmake
kompiluje się podobnie na różnych platformach. Przykład dla protobuf (Protocol Buffers):
- Pobierz kod protobuf i przejdź do katalogu projektu.
macOS / Linux
Konfiguracja projektu przez
cmake
:-S .
wskazuje źródła,-B builddir
katalog budowy. Flagi-DCMAKE_INSTALL_PREFIX
itp. kierują kompilację do ServBay Development Library. Flagi dotyczące rpath zapewniają wykrywanie zależności w ServBay.bash# W katalogu źródeł 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
21Kompilacja i instalacja:
bashcmake --build builddir -j ${CPU_NUMBER} cmake --install builddir
1
2
Windows
Konfiguracja przez
cmake
(PowerShell lub Developer Command Prompt):powershell# W katalogu źródeł 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
12Kompilacja i instalacja:
powershell# Kompilacja cmake --build builddir --config Release --parallel $CPU_NUMBER # Instalacja cmake --install builddir --config Release
1
2
3
4
Kompilacja modułów PHP
Aby skompilować dodatkowe rozszerzenia PHP dla ServBay (np. swoole
, redis
, mongodb
), przejdź do szczegółowej instrukcji:
Kompilacja modułów PostgreSQL
Aby skompilować dodatkowe moduły PostgreSQL w ServBay, skorzystaj z dedykowanego poradnika:
Jak kompilować moduły PostgreSQL
Podsumowanie
Dzięki ServBay Development Library oraz właściwej konfiguracji zmiennych środowiskowych, możesz łatwo przeprowadzać ponowną kompilację oraz dostosowywać pakiety na macOS i Windows. Otrzymujesz pełną elastyczność – zarówno dla własnych potrzeb, jak i przy wdrażaniu najnowszych wersji bibliotek.
Najważniejsze punkty
- Obsługa wielu platform: ServBay wspiera kompilację zarówno na macOS, jak i Windows
- Różnice w ścieżkach: macOS używa
/Applications/ServBay
, WindowsC:\ServBay
- Różnice w narzędziach: macOS korzysta z Xcode Command Line Tools, Windows z Visual Studio Build Tools
- Konfiguracja środowiska: Wybieraj odpowiedni skrypt zgodnie z platformą
Wskazówki
- Przed kompilacją zawsze zapoznaj się z oficjalnym poradnikiem pakietu
- Zmień konfigurację i kroki w zależności od platformy docelowej
- Na Windows rekomendowane jest używanie systemu CMake
- Niektóre pakiety open-source mogą wymagać specyficznych kroków lub dodatkowych zależności zależnie od systemu
Postępując zgodnie z niniejszym poradnikiem, bez problemu skompilujesz dowolny pakiet w środowisku ServBay na obu platformach.