Kompilasi Ulang dengan ServBay
ServBay menyediakan persekitaran pembangunan web tempatan yang mantap dan lengkap untuk pengguna macOS serta Windows, lengkap dengan pelbagai pakej dan alatan. Walaupun ServBay sudah menyediakan pelbagai versi pakej prapasang, kadang-kadang pembangun memerlukan kompilasi ulang untuk tujuan tertentu seperti:
- Mengaktifkan pilihan kompilasi spesifik untuk sesuatu pakej.
- Menambah modul atau ekstensi yang tidak disediakan secara lalai oleh ServBay (misalnya ekstensi PHP baru atau modul PostgreSQL).
- Menggunakan pustaka tertentu yang berbeza daripada versi lalai ServBay semasa kompilasi.
- Membuat pengubahsuaian tersuai pada pakej yang dibekalkan oleh ServBay.
ServBay menyediakan semua persediaan pengkompilan dan alat yang diperlukan untuk membantu anda melaksanakan tugas kompilasi ulang dengan mudah.
Untuk kompilasi ulang yang lancar, pengguna seharusnya memahami asas proses pengkompilan perisian pada sistem operasi masing-masing:
- macOS/Linux: Alat pengkompilan Unix/Linux seperti
configure,make, danmake install - Windows: Persekitaran pembangunan Visual Studio, MSBuild, cmake dan lain-lain
Keperluan Asas
Sebelum memulakan kompilasi ulang, pastikan anda memenuhi keperluan berikut:
Pasang ServBay Development Library: Ini ialah komponen utama untuk kompilasi ulang. Pakej ini mengandungi semua pustaka, fail header, dan sumber pembangunan yang diperlukan. Anda boleh memasangnya melalui panel Pakej dalam aplikasi ServBay.

Pasang set alat pembangunan:
macOS
Pasang Xcode Command Line Tools: Ini adalah set alat pembangunan asas untuk macOS yang mengandungi pengkompil (Clang), linker dan lain-lain. Buka Terminal dan jalankan arahan berikut untuk pemasangan:
bashxcode-select --install1Jika sudah dipasang, sistem akan memaklumkan kepada anda.
Pasang alatan pengkompilan tambahan: Untuk menyusun kebanyakan perisian sumber terbuka, anda juga perlu memasang
autoconf,automake,libtooldan seumpamanya. Biasanya boleh dipasang melalui Homebrew:bashbrew install autoconf automake libtool cmake1Jika anda belum memasang Homebrew, sila rujuk laman rasmi Homebrew untuk panduan pemasangan.
Windows
Pasang Visual Studio Build Tools atau Visual Studio Community: Windows memerlukan pengkompil Microsoft Visual C++ dan set alat pembinaan. Anda boleh memilih sama ada:
Pilihan 1: Visual Studio Build Tools (disyorkan, lebih ringan)
- Muat turun dan pasang Visual Studio Build Tools
- Semasa pemasangan, pilih workload "C++ build tools"
- Pastikan komponen berikut disertakan:
- MSVC v143 - VS 2022 C++ x64/x86 build tools
- Windows 11 SDK (versi terkini)
- Alat CMake
Pilihan 2: Visual Studio Community
- Muat turun dan pasang Visual Studio Community
- Pilih workload "Desktop development with C++"
- Pastikan CMake dan Windows SDK disertakan
Pasang alatan tambahan: Untuk sejumlah projek sumber terbuka, anda mungkin perlu memasang:
- Git for Windows: Untuk memuat turun kod sumber
- MSYS2 atau vcpkg: Untuk mengurus kebergantungan pustaka C/C++
- Python: Sesetengah skrip pembinaan mungkin memerlukan Python
powershell# Pasang alat tambahan dengan chocolatey (pilihan) choco install git cmake python msys21
2
Menyediakan Persekitaran Pengkompilan
Selepas memasang ServBay Development Library dan alat pembangunan lain, anda perlu menginisialisasi persekitaran pengkompilan. Langkah ini melibatkan tetapan pembolehubah persekitaran yang akan membantu pengkompil dan sistem pembinaan mencari pustaka, header, serta binari ServBay bagi tujuan penyusunan dan pemautan yang betul.
Konfigurasi persekitaran akan berbeza mengikut sistem operasi dan seni bina CPU:
macOS
ServBay menyokong dua seni bina CPU: Intel (x86_64) dan Apple Silicon (Arm64). Pilih skrip inisialisasi persekitaran mengikut seni bina ServBay Runtime semasa anda.
Windows
ServBay versi Windows menyokong seni bina x64, dan dipasang di direktori C:\ServBay.
Menyemak Seni Bina CPU ServBay Runtime
macOS
Anda boleh periksa seni bina dengan memeriksa mana-mana fail boleh laksana dalam direktori bin ServBay, contohnya bison:
bash
# Jalankan arahan berikut di terminal untuk periksa
$ file /Applications/ServBay/bin/bison
/Applications/ServBay/bin/bison: Mach-O 64-bit executable arm641
2
3
2
3
bash
# Jalankan arahan berikut di terminal untuk periksa
$ file /Applications/ServBay/bin/bison
/Applications/ServBay/bin/bison: Mach-O 64-bit executable x86_641
2
3
2
3
Windows
ServBay untuk Windows hanya menyokong x64. Anda boleh semak fail boleh laksana melalui PowerShell:
powershell
# Jalankan arahan berikut di PowerShell
PS> Get-Command "C:\ServBay\bin\bison.exe" | Select-Object -ExpandProperty FileVersionInfo | Select-Object ProductName, FileDescription1
2
2
Atau, anda boleh semak sifat fail secara langsung.
Selepas pengesahan seni bina, pilih skrip inisialisasi persekitaran yang sesuai untuk sistem anda.
Inisialisasi Pembolehubah Persekitaran Pengkompilan
Pilih dan jalankan skrip inisialisasi persekitaran yang bersesuaian dengan sistem operasi dan seni bina CPU anda:
macOS
Buka tetingkap terminal baharu dan salin serta jalankan skrip berikut mengikut seni bina CPU anda. Skrip ini akan menetapkan pelbagai laluan dan flag yang diperlukan oleh persekitaran pengkompilan ServBay.
bash
# Tetapkan bilangan teras CPU untuk kompilasi selari
CPU_NUMBER=$(sysctl -n hw.ncpu)
# Laluan pemasangan ServBay
SERVBAY_BASE_FULL_PATH="/Applications/ServBay"
# Nama direktori pakej
SERVBAY_PACKAGE_DIR_NAME="package"
# Laluan penuh pakej
SERVBAY_PACKAGE_FULL_PATH="${SERVBAY_BASE_FULL_PATH}/${SERVBAY_PACKAGE_DIR_NAME}"
# Laluan binari ServBay
SERVBAY_BIN_PATH="${SERVBAY_PACKAGE_FULL_PATH}/bin"
SERVBAY_SBIN_PATH="${SERVBAY_PACKAGE_FULL_PATH}/sbin"
# Laluan fail konfigurasi ServBay
SERVBAY_ETC_PATH="${SERVBAY_PACKAGE_FULL_PATH}/etc"
# Laluan data ServBay
SERVBAY_VAR_PATH="${SERVBAY_PACKAGE_FULL_PATH}/var"
# Laluan pemasangan ServBay Development Library
SERVBAY_COMMON_PATH="${SERVBAY_PACKAGE_FULL_PATH}/common"
# Laluan header ServBay Development Library
SERVBAY_COMMON_INCLUDE_PATH="${SERVBAY_COMMON_PATH}/include"
# Laluan pustaka 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"
# Direktori pembinaan semasa
SERVBAY_BUILD_DIR=$(pwd)
SERVBAY_BUILD_SRC_DIR=${SERVBAY_BUILD_DIR}/src
# Maklumat versi OpenSSL
OPENSSL_SELECTED_VERSION="3.2"
OPENSSL_VERSION="3.2.1"
# Versi minimum OS untuk pembinaan
BUILD_OS_MIN_VERSION="12.00" # macOS Monterey atau lebih tinggi
# Flag seni bina CPU
BUILD_CPU_ARCH="-arch arm64"
BUILD_CPU_ARCH_CMAKE="arm64"
BUILD_MACOS_TARGET="" # Tidak perlu -target untuk Arm64
# Tetap flag pengkompil C: tahap optimasi, versi macOS minimum, seni bina
export CFLAGS="-Qunused-arguments -O3 -mmacosx-version-min=${BUILD_OS_MIN_VERSION} ${BUILD_CPU_ARCH} ${BUILD_MACOS_TARGET}"
# Tetap flag linker: runtime rpath, laluan pustaka (-L), versi macOS minimum, seni bina
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}"
# Tetap flag preprocessor C dan CXX: laluan header (-I)
export CPPFLAGS="-I${SERVBAY_COMMON_INCLUDE_PATH}"
# Flag pengkompil C++: sama seperti CFLAGS
export CXXFLAGS="-Qunused-arguments -O3 -mmacosx-version-min=${BUILD_OS_MIN_VERSION} ${BUILD_CPU_ARCH} ${BUILD_MACOS_TARGET}"
# Tetapkan PATH: utamakan bin/sbin ServBay
export PATH="${SERVBAY_BIN_PATH}:${SERVBAY_SBIN_PATH}:/usr/bin:/bin:/usr/sbin:/sbin:/Library/Apple/usr/bin"
# Laluan pkg-config: mencari maklumat pembinaan pustaka
export PKG_CONFIG_PATH="${SERVBAY_COMMON_LIB_PATH}/pkgconfig"
# Laluan alat pkg-config
export PKG_CONFIG="${SERVBAY_BIN_PATH}/pkg-config"
# Direktori pustaka pkg-config
export PKG_CONFIG_LIBDIR="${SERVBAY_COMMON_LIB_PATH}/pkgconfig"
# Tambah laluan bin/sbin sistem/Homebrew ke PATH
export PATH=$PATH:"/usr/local/bin:/usr/local/sbin"
export PATH=$PATH:"/opt/homebrew/bin/" # Laluan Homebrew lalai
# Tambah laluan pustaka dan header OpenSSL ke LDFLAGS & 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}"
# Tambah laluan pkgconfig 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"
# Selepas tetapan, anda boleh laksanakan proses kompilasi dalam terminal ini
echo "Persekitaran kompilt Arm64 ServBay telah disediakan."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
# Tetapkan bilangan teras CPU untuk kompilasi selari
CPU_NUMBER=$(sysctl -n hw.ncpu)
# Laluan pemasangan ServBay
SERVBAY_BASE_FULL_PATH="/Applications/ServBay"
# Nama direktori pakej
SERVBAY_PACKAGE_DIR_NAME="package"
# Laluan penuh pakej
SERVBAY_PACKAGE_FULL_PATH="${SERVBAY_BASE_FULL_PATH}/${SERVBAY_PACKAGE_DIR_NAME}"
# Laluan binari ServBay
SERVBAY_BIN_PATH="${SERVBAY_PACKAGE_FULL_PATH}/bin"
SERVBAY_SBIN_PATH="${SERVBAY_PACKAGE_FULL_PATH}/sbin"
# Laluan fail konfigurasi ServBay
SERVBAY_ETC_PATH="${SERVBAY_PACKAGE_FULL_PATH}/etc"
# Laluan data ServBay
SERVBAY_VAR_PATH="${SERVBAY_PACKAGE_FULL_PATH}/var"
# Laluan pemasangan ServBay Development Library
SERVBAY_COMMON_PATH="${SERVBAY_PACKAGE_FULL_PATH}/common"
# Laluan header ServBay Development Library
SERVBAY_COMMON_INCLUDE_PATH="${SERVBAY_COMMON_PATH}/include"
# Laluan pustaka 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"
# Direktori pembinaan semasa
SERVBAY_BUILD_DIR=$(pwd)
SERVBAY_BUILD_SRC_DIR=${SERVBAY_BUILD_DIR}/src
# Maklumat versi OpenSSL
OPENSSL_SELECTED_VERSION="1.1.1u"
OPENSSL_VERSION="1.1.1u"
# Versi minimum OS untuk pembinaan
BUILD_OS_MIN_VERSION="12.00" # macOS Monterey atau lebih tinggi
# Flag seni bina CPU
BUILD_CPU_ARCH="-arch x86_64"
BUILD_CPU_ARCH_CMAKE="x86_64"
# Flag platform sasaran (Intel perlu -target)
BUILD_MACOS_TARGET="-target x86_64-apple-macos${BUILD_OS_MIN_VERSION}"
# Tetap flag pengkompil C: tahap optimasi, versi macOS minimum, seni bina, sasaran
export CFLAGS="-Qunused-arguments -O3 -mmacosx-version-min=${BUILD_OS_MIN_VERSION} ${BUILD_CPU_ARCH} ${BUILD_MACOS_TARGET}"
# Tetap flag linker: runtime rpath, laluan pustaka (-L), versi macOS minimum, seni bina, sasaran
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}"
# Tetap flag preprocessor C dan CXX: laluan header (-I)
export CPPFLAGS="-I${SERVBAY_COMMON_INCLUDE_PATH}"
# Flag pengkompil C++: sama seperti CFLAGS
export CXXFLAGS="-Qunused-arguments -O3 -mmacosx-version-min=${BUILD_OS_MIN_VERSION} ${BUILD_CPU_ARCH} ${BUILD_MACOS_TARGET}"
# Tetapkan PATH: utamakan bin/sbin ServBay
export PATH="${SERVBAY_BIN_PATH}:${SERVBAY_SBIN_PATH}:/usr/bin:/bin:/usr/sbin:/sbin:/Library/Apple/usr/bin"
# Laluan pkg-config: mencari maklumat pembinaan pustaka
export PKG_CONFIG_PATH="${SERVBAY_COMMON_LIB_PATH}/pkgconfig"
# Laluan alat pkg-config
export PKG_CONFIG="${SERVBAY_BIN_PATH}/pkg-config"
# Direktori pustaka pkg-config
export PKG_CONFIG_LIBDIR="${SERVBAY_COMMON_LIB_PATH}/pkgconfig"
# Tambah laluan bin/sbin sistem/Homebrew ke PATH
export PATH=$PATH:"/usr/local/bin:/usr/local/sbin"
export PATH=$PATH:"/opt/homebrew/bin/" # Laluan Homebrew lalai
# Tambah laluan pustaka dan header OpenSSL ke LDFLAGS & 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}"
# Tambah laluan pkgconfig 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"
# Selepas tetapan, anda boleh laksanakan proses kompilasi dalam terminal ini
echo "Persekitaran kompilt x86_64 ServBay telah disediakan."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
Untuk Windows, tetapan pembolehubah persekitaran perlu dilakukan dalam PowerShell atau Developer Command Prompt. Skrip berikut adalah untuk seni bina x64:
powershell
# Tetapkan bilangan teras CPU untuk kompilt selari
$CPU_NUMBER = (Get-WmiObject -Class Win32_Processor).NumberOfLogicalProcessors
# Laluan pemasangan ServBay (Windows)
$SERVBAY_BASE_FULL_PATH = "C:\ServBay"
# Nama direktori pakej
$SERVBAY_PACKAGE_DIR_NAME = "package"
# Laluan penuh pakej
$SERVBAY_PACKAGE_FULL_PATH = "${SERVBAY_BASE_FULL_PATH}\${SERVBAY_PACKAGE_DIR_NAME}"
# Laluan binari ServBay
$SERVBAY_BIN_PATH = "${SERVBAY_PACKAGE_FULL_PATH}\bin"
$SERVBAY_SBIN_PATH = "${SERVBAY_PACKAGE_FULL_PATH}\sbin"
# Laluan fail konfigurasi ServBay
$SERVBAY_ETC_PATH = "${SERVBAY_PACKAGE_FULL_PATH}\etc"
# Laluan data ServBay
$SERVBAY_VAR_PATH = "${SERVBAY_PACKAGE_FULL_PATH}\var"
# Laluan pemasangan ServBay Development Library
$SERVBAY_COMMON_PATH = "${SERVBAY_PACKAGE_FULL_PATH}\common"
# Laluan header ServBay Development Library
$SERVBAY_COMMON_INCLUDE_PATH = "${SERVBAY_COMMON_PATH}\include"
# Laluan pustaka 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"
# Direktori pembinaan semasa
$SERVBAY_BUILD_DIR = Get-Location
$SERVBAY_BUILD_SRC_DIR = "${SERVBAY_BUILD_DIR}\src"
# Maklumat versi OpenSSL (Windows)
$OPENSSL_SELECTED_VERSION = "3.2"
$OPENSSL_VERSION = "3.2.1"
# Konfigurasi pembinaan Windows
$BUILD_PLATFORM = "x64"
$BUILD_CONFIG = "Release"
# Tetapan pembolehubah persekitaran
$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
# Tetapkan PATH: utamakan bin/sbin ServBay
$env:PATH = "${SERVBAY_BIN_PATH};${SERVBAY_SBIN_PATH};$env:PATH"
# Tetapkan pembolehubah pengkompilan
$env:INCLUDE = "${SERVBAY_COMMON_INCLUDE_PATH};$env:INCLUDE"
$env:LIB = "${SERVBAY_COMMON_LIB_PATH};$env:LIB"
$env:LIBPATH = "${SERVBAY_COMMON_LIB_PATH};$env:LIBPATH"
# Tetapan pkg-config (jika tersedia)
$env:PKG_CONFIG_PATH = "${SERVBAY_COMMON_LIB_PATH}\pkgconfig"
# Tambah laluan pustaka dan header 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"
# Tetapan CMAKE
$env:CMAKE_PREFIX_PATH = $SERVBAY_COMMON_PATH
$env:CMAKE_INSTALL_PREFIX = $SERVBAY_COMMON_PATH
# Penyiapan persekitaran
Write-Host "Persekitaran kompilasi Windows x64 ServBay telah disediakan."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
Untuk pengguna Developer Command Prompt, anda juga boleh menggunakan skrip batch:
batch
@echo off
REM Sediakan persekitaran kompilasi ServBay Windows
REM Laluan pemasangan ServBay
set SERVBAY_BASE_FULL_PATH=C:\ServBay
set SERVBAY_PACKAGE_FULL_PATH=%SERVBAY_BASE_FULL_PATH%\package
REM Tetapan laluan 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 Versi OpenSSL
set OPENSSL_SELECTED_VERSION=3.2
REM Tetapan pembolehubah persekitaran
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 Persekitaran kompilasi ServBay Windows telah siap.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
Nota Penting: Semua pembolehubah persekitaran hanya sah untuk sesi terminal semasa. Sekiranya anda tutup atau buka tetingkap terminal baru, anda perlu jalankan skrip tetapan semula.
Contoh Kompilasi
Dengan persekitaran pengkompilan ditetapkan, kini anda boleh memuat turun kod sumber dan mulakan proses kompilasi. Berikut beberapa contoh kompilasi silang platform yang biasa.
Kompilasi ImageMagick
ImageMagick ialah pustaka pemprosesan imej yang digunakan oleh ekstensi PHP imagick. ServBay telah memasang ImageMagick secara lalai, jadi biasanya anda tidak perlu kompil sendiri. Berikut contoh proses pengkompilan hanya untuk rujukan bagaimana menggunakan persekitaran ServBay.
macOS / Linux
Muat turun dan extract kod sumber ImageMagick:
bash# Gantikan versi dengan versi terkini jika perlu 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-331
2
3
4Jalankan skrip
./configure: Gunakan pembolehubah persekitaran yang telah ditetapkan untuk menjalankan configure. Pilihan--prefix,--libdir,--includedirdan lain-lain harus mengarah ke ServBay Development Library supaya hasil kompilasi dapat digunakan oleh perisian lain dalam ServBay seperti ekstensi PHPimagick.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/Font1
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
30Laksanakan
makedanmake install:makeakan paketkan fail boleh laksana dan pustaka mengikut konfigurasi.-j ${CPU_NUMBER}akan menjalankan kompilasi selari menggunakan semua teras CPU.make installakan memasang hasil ke direktori yang ditentukan oleh--prefix.bashmake -j ${CPU_NUMBER} make install1
2
Windows
Untuk Windows, kompilasi ImageMagick biasanya menggunakan Visual Studio atau CMake. Kompilasi di Windows agak rumit, jadi disarankan gunakan kaedah CMake:
Muat turun kod sumber ImageMagick:
powershell# Muat turun dengan curl atau penyemak imbas curl -O https://imagemagick.org/archive/releases/ImageMagick-7.1.1-33.tar.gz # Extract (perlu 7zip atau alat serupa) tar -xzf ImageMagick-7.1.1-33.tar.gz cd ImageMagick-7.1.1-331
2
3
4
5Konfigurasi dengan CMake (dalam Developer Command Prompt atau PowerShell):
powershell# Direktori pembinaan mkdir builddir cd builddir # Konfigurasi projek dengan 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=ON1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18Kompil dan pasang:
powershell# Kompilasi cmake --build . --config Release --parallel $CPU_NUMBER # Pemasangan cmake --install . --config Release1
2
3
4
Kompilasi Pakej dengan cmake
Untuk pakej dengan sistem pembinaan cmake, proses kompilasi hampir sama di semua platform. Contoh berikut menggunakan protobuf (Protocol Buffers):
- Muat turun kod sumber protobuf dan masuk ke direktori.
macOS / Linux
Konfigurasi projek dengan
cmake: Pilihan-S .dan-B builddiruntuk sumber dan binaan.-DCMAKE_INSTALL_PREFIXmenetapkan laluan pemasangan ke ServBay Development Library. Tetapan lain adalah spesifik kepada protobuf dan akan memastikan pustaka yang dikompil boleh digunakan dalam ServBay.bash# Pastikan anda berada dalam direktori 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=171
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21Kompil dan pasang:
bashcmake --build builddir -j ${CPU_NUMBER} cmake --install builddir1
2
Windows
Konfigurasi projek dengan
cmake(PowerShell atau Developer Command Prompt):powershell# Pastikan anda berada dalam direktori 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=171
2
3
4
5
6
7
8
9
10
11
12Kompil dan pasang:
powershell# Kompilasi cmake --build builddir --config Release --parallel $CPU_NUMBER # Pemasangan cmake --install builddir --config Release1
2
3
4
Kompilasi Modul PHP
Jika anda perlu kompilasi modul tambahan untuk versi PHP tertentu dalam ServBay (seperti swoole, redis, mongodb), sila rujuk dokumentasi khas:
Kompilasi Modul PostgreSQL
Sekiranya anda perlu menghasilkan modul tambahan untuk PostgreSQL dalam ServBay, sila rujuk dokumentasi khusus:
Bagaimana Kompilasi Modul PostgreSQL
Rumusan
Dengan ServBay Development Library dan tetapan pembolehubah persekitaran yang lengkap, pembangun boleh dengan mudah melakukan kompilasi ulang serta penyesuaian pada pakej perisian di macOS dan Windows. Ini memberikan anda fleksibiliti tinggi memenuhi keperluan projek tertentu atau menggunakan versi pustaka paling terkini.
Poin Penting
- Sokongan Rentas Platform: ServBay kini menyokong pengkompilan di macOS dan Windows.
- Perbezaan Laluan: Laluan pemasangan berbeza mengikut platform (macOS:
/Applications/ServBay, Windows:C:\ServBay). - Perbezaan Alatan: macOS menggunakan Xcode Command Line Tools, Windows menggunakan Visual Studio Build Tools.
- Konfigurasi Persekitaran: Pastikan anda memilih skrip konfigurasi persekitaran yang betul untuk sistem anda.
Perhatian
- Pastikan anda membaca panduan rasmi kompilasi pakej sebelum memulakan kompilasi
- Sesuaikan tetapan mengikut keperluan platform sasaran
- Untuk Windows, disyorkan menggunakan sistem pembinaan CMake
- Sesetengah perisian sumber terbuka mempunyai keperluan dan kebergantungan kompilasi berbeza bergantung pada platform
Dengan mengikuti panduan ini, anda boleh berjaya melakukan kompilasi pakej dalam persekitaran ServBay di kedua-dua platform utama.
