Biên Dịch Lại Phần Mềm Với ServBay
ServBay cung cấp cho người dùng macOS và Windows một môi trường phát triển Web nội bộ mạnh mẽ, đầy đủ với hàng loạt các gói phần mềm và công cụ. Ngoài những phiên bản phần mềm được cài đặt sẵn, đôi khi các nhà phát triển cần biên dịch lại phần mềm để đáp ứng các nhu cầu đặc biệt như:
- Bật các lựa chọn biên dịch riêng cho từng gói phần mềm.
- Thêm module hoặc extension chưa có sẵn trong bản mặc định của ServBay (ví dụ như extension PHP mới hoặc module PostgreSQL khác).
- Biên dịch phần mềm với các thư viện khác với phiên bản mặc định của ServBay.
- Tùy biến hoặc chỉnh sửa các gói phần mềm được ServBay cung cấp.
ServBay đã chuẩn bị sẵn môi trường và chuỗi công cụ biên dịch giúp bạn thực hiện các thao tác này một cách dễ dàng.
Để thực hiện quá trình biên dịch lại thuận lợi, bạn cần nắm những kiến thức cơ bản về chuỗi công cụ của hệ điều hành tương ứng:
- macOS/Linux: các công cụ Unix/Linux như
configure
,make
,make install
- Windows: hệ thống xây dựng Visual Studio, MSBuild, cmake v.v.
Điều kiện tiên quyết
Trước khi bắt đầu biên dịch lại phần mềm, hãy chắc chắn bạn đã đáp ứng đủ các yêu cầu sau:
Cài đặt ServBay Development Library: Đây là gói phụ thuộc cốt lõi cho việc biên dịch lại. Nó bao gồm đầy đủ thư viện, file header và các tài nguyên phát triển cần thiết. Truy cập panel Gói phần mềm trong giao diện ServBay để tìm và cài đặt nó.
Cài đặt bộ công cụ phát triển:
macOS
Cài đặt Xcode Command Line Tools: Đây là bộ công cụ tối thiểu do macOS cung cấp, bao gồm trình biên dịch (Clang), linker và các công cụ thiết yếu. Mở Terminal và chạy lệnh sau:
bashxcode-select --install
1Nếu đã cài, hệ thống sẽ thông báo.
Cài đặt thêm các công cụ biên dịch: Để biên dịch phần lớn phần mềm nguồn mở, bạn cần thêm
autoconf
,automake
,libtool
và các công cụ khác. Thường dùng Homebrew để cài:bashbrew install autoconf automake libtool cmake
1Nếu chưa cài Homebrew, hãy tham khảo hướng dẫn trên website chính thức của Homebrew.
Windows
Cài Visual Studio Build Tools hoặc Visual Studio Community: Nền tảng Windows cần trình biên dịch Microsoft Visual C++ và các công cụ xây dựng. Có hai lựa chọn:
Cách 1: Visual Studio Build Tools (khuyên dùng, nhẹ hơn)
- Tải và cài Visual Studio Build Tools
- Trong quá trình cài, chọn workload "C++ build tools"
- Đảm bảo có các thành phần sau:
- MSVC v143 - VS 2022 C++ x64/x86 build tools
- Windows 11 SDK (phiên bản mới nhất)
- Công cụ CMake
Cách 2: Visual Studio Community
- Tải và cài Visual Studio Community
- Chọn workload "Desktop development with C++"
- Đảm bảo đã cài CMake và Windows SDK
Cài thêm các công cụ: Một số dự án nguồn mở còn cần:
- Git for Windows: tải source
- MSYS2 hoặc vcpkg: quản lý thư viện C/C++
- Python: cần cho một số script build
powershell# Cài thêm công cụ với chocolatey (tùy chọn) choco install git cmake python msys2
1
2
Thiết lập môi trường biên dịch
Sau khi cài ServBay Development Library và các bộ công cụ, bạn cần khởi tạo môi trường biên dịch bằng cách thiết lập các biến môi trường. Việc này giúp trình biên dịch/và hệ thống build biết vị trí các thư viện, header và file nhị phân của ServBay để liên kết chính xác.
Tùy hệ điều hành và kiến trúc, cách cấu hình sẽ khác nhau:
macOS
ServBay chia theo kiến trúc CPU: Intel (x86_64) và Apple Silicon (Arm64). Bạn cần chọn lệnh khởi tạo môi trường phù hợp với kiến trúc Runtime đang sử dụng.
Windows
Bản ServBay cho Windows hỗ trợ kiến trúc x64, cài tại thư mục C:\ServBay
.
Kiểm tra kiến trúc CPU của ServBay Runtime
macOS
Bạn có thể kiểm tra kiến trúc của một file thực thi bất kỳ trong thư mục bin
của ServBay, ví dụ với bison
:
bash
# Chạy lệnh sau trong Terminal để kiểm tra
$ file /Applications/ServBay/bin/bison
/Applications/ServBay/bin/bison: Mach-O 64-bit executable arm64
1
2
3
2
3
bash
# Chạy lệnh sau trong Terminal để kiểm tra
$ file /Applications/ServBay/bin/bison
/Applications/ServBay/bin/bison: Mach-O 64-bit executable x86_64
1
2
3
2
3
Windows
Bản cho Windows chỉ hỗ trợ x64, bạn kiểm tra với PowerShell:
powershell
# Chạy lệnh sau trong PowerShell để kiểm tra
PS> Get-Command "C:\ServBay\bin\bison.exe" | Select-Object -ExpandProperty FileVersionInfo | Select-Object ProductName, FileDescription
1
2
2
Hoặc kiểm tra trực tiếp thuộc tính file.
Xác định kiến trúc xong, hãy chọn script khởi tạo môi trường tương ứng.
Khởi tạo biến môi trường biên dịch
Chọn script khởi tạo môi trường dựa trên hệ điều hành và kiến trúc CPU của bạn:
macOS
Mở cửa sổ Terminal mới, copy & paste script ứng với kiến trúc CPU để thiết lập các đường dẫn, flag cho môi trường biên dịch ServBay.
bash
# Thiết lập số nhân CPU để biên dịch đa luồng
CPU_NUMBER=$(sysctl -n hw.ncpu)
# Đường dẫn gốc cài ServBay
SERVBAY_BASE_FULL_PATH="/Applications/ServBay"
# Tên thư mục package
SERVBAY_PACKAGE_DIR_NAME="package"
# Đường dẫn package đầy đủ
SERVBAY_PACKAGE_FULL_PATH="${SERVBAY_BASE_FULL_PATH}/${SERVBAY_PACKAGE_DIR_NAME}"
# Đường dẫn bin của ServBay
SERVBAY_BIN_PATH="${SERVBAY_PACKAGE_FULL_PATH}/bin"
SERVBAY_SBIN_PATH="${SERVBAY_PACKAGE_FULL_PATH}/sbin"
# Đường dẫn file cấu hình
SERVBAY_ETC_PATH="${SERVBAY_PACKAGE_FULL_PATH}/etc"
# Đường dẫn dữ liệu biến
SERVBAY_VAR_PATH="${SERVBAY_PACKAGE_FULL_PATH}/var"
# Đường dẫn cài ServBay Development Library
SERVBAY_COMMON_PATH="${SERVBAY_PACKAGE_FULL_PATH}/common"
# Đường dẫn header
SERVBAY_COMMON_INCLUDE_PATH="${SERVBAY_COMMON_PATH}/include"
# Đường dẫn thư viện
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"
# Thư mục build hiện tại
SERVBAY_BUILD_DIR=$(pwd)
SERVBAY_BUILD_SRC_DIR=${SERVBAY_BUILD_DIR}/src
# Thông tin phiên bản OpenSSL
OPENSSL_SELECTED_VERSION="3.2"
OPENSSL_VERSION="3.2.1"
# Phiên bản tối thiểu của macOS cho build
BUILD_OS_MIN_VERSION="12.00" # Monterey trở lên
# Cờ kiến trúc CPU
BUILD_CPU_ARCH="-arch arm64"
BUILD_CPU_ARCH_CMAKE="arm64"
BUILD_MACOS_TARGET="" # Arm64 thường không cần cờ -target
# Thiết lập flag cho trình biên dịch C
export CFLAGS="-Qunused-arguments -O3 -mmacosx-version-min=${BUILD_OS_MIN_VERSION} ${BUILD_CPU_ARCH} ${BUILD_MACOS_TARGET}"
# Thiết lập flag linker
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}"
# Đường dẫn header cho compiler và preprocessor
export CPPFLAGS="-I${SERVBAY_COMMON_INCLUDE_PATH}"
# Flag cho trình biên dịch C++
export CXXFLAGS="-Qunused-arguments -O3 -mmacosx-version-min=${BUILD_OS_MIN_VERSION} ${BUILD_CPU_ARCH} ${BUILD_MACOS_TARGET}"
# Đường dẫn thực thi ưu tiên dùng bin/sbin của ServBay
export PATH="${SERVBAY_BIN_PATH}:${SERVBAY_SBIN_PATH}:/usr/bin:/bin:/usr/sbin:/sbin:/Library/Apple/usr/bin"
# Đường dẫn 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"
# Thêm bin của hệ thống/Homebrew vào PATH
export PATH=$PATH:"/usr/local/bin:/usr/local/sbin"
export PATH=$PATH:"/opt/homebrew/bin/" # Đường dẫn mặc định của Homebrew
# Thêm đường dẫn thư viện & header của 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}"
# Thêm pkgconfig của 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"
# Khởi tạo môi trường xong, bạn đã sẵn sàng biên dịch
echo "ServBay Arm64 môi trường biên dịch đã thiết lập."
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
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
bash
# Thiết lập số nhân CPU để biên dịch đa luồng
CPU_NUMBER=$(sysctl -n hw.ncpu)
# Các đường dẫn như script Arm64 (tương tự, chỉ khác cờ và phiên bản OpenSSL)
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"
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_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_SELECTED_VERSION="1.1.1u"
OPENSSL_VERSION="1.1.1u"
BUILD_OS_MIN_VERSION="12.00" # Monterey trở lên
BUILD_CPU_ARCH="-arch x86_64"
BUILD_CPU_ARCH_CMAKE="x86_64"
BUILD_MACOS_TARGET="-target x86_64-apple-macos${BUILD_OS_MIN_VERSION}"
export CFLAGS="-Qunused-arguments -O3 -mmacosx-version-min=${BUILD_OS_MIN_VERSION} ${BUILD_CPU_ARCH} ${BUILD_MACOS_TARGET}"
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}"
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}"
export PATH="${SERVBAY_BIN_PATH}:${SERVBAY_SBIN_PATH}:/usr/bin:/bin:/usr/sbin:/sbin:/Library/Apple/usr/bin"
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/" # Đường dẫn mặc định của Homebrew
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 môi trường biên dịch đã thiết lập."
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
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
Windows
Trên Windows, thiết lập môi trường bằng PowerShell hoặc Developer Command Prompt. Script sau dành cho x64:
powershell
# Thiết lập số nhân CPU
$CPU_NUMBER = (Get-WmiObject -Class Win32_Processor).NumberOfLogicalProcessors
# Đường dẫn gốc cài ServBay
$SERVBAY_BASE_FULL_PATH = "C:\ServBay"
$SERVBAY_PACKAGE_DIR_NAME = "package"
$SERVBAY_PACKAGE_FULL_PATH = "${SERVBAY_BASE_FULL_PATH}\${SERVBAY_PACKAGE_DIR_NAME}"
# Đường dẫn bin, sbin, etc, var
$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"
# Đường dẫn 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"
# Thư mục build hiện tại
$SERVBAY_BUILD_DIR = Get-Location
$SERVBAY_BUILD_SRC_DIR = "${SERVBAY_BUILD_DIR}\src"
# Thông tin OpenSSL
$OPENSSL_SELECTED_VERSION = "3.2"
$OPENSSL_VERSION = "3.2.1"
# Thiết lập môi trường
$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
$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"
$env:PKG_CONFIG_PATH = "${SERVBAY_COMMON_LIB_PATH}\pkgconfig"
$env:INCLUDE = "${SERVBAY_COMMON_PATH}\openssl\${OPENSSL_SELECTED_VERSION}\include;$env:INCLUDE"
$env:LIB = "${SERVBAY_COMMON_PATH}\openssl\${OPENSSL_SELECTED_VERSION}\lib;$env:LIB"
$env:CMAKE_PREFIX_PATH = $SERVBAY_COMMON_PATH
$env:CMAKE_INSTALL_PREFIX = $SERVBAY_COMMON_PATH
Write-Host "ServBay Windows x64 môi trường biên dịch đã thiết lập."
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
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
Nếu dùng Developer Command Prompt, có thể dùng batch script sau:
batch
@echo off
REM Thiết lập môi trường biên dịch ServBay Windows
REM Đường dẫn gốc cài đặt ServBay
set SERVBAY_BASE_FULL_PATH=C:\ServBay
set SERVBAY_PACKAGE_FULL_PATH=%SERVBAY_BASE_FULL_PATH%\package
REM Các đường dẫn cần thiết
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 Phiên bản OpenSSL
set OPENSSL_SELECTED_VERSION=3.2
REM Thiết lập biến môi trường
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 Môi trường biên dịch ServBay Windows đã thiết lập.
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
Lưu ý: Các biến môi trường này chỉ có hiệu lực trong phiên Terminal hiện tại. Nếu đóng Terminal hoặc mở cửa sổ mới, hãy chạy lại script để khởi tạo lại môi trường biên dịch.
Ví dụ biên dịch
Sau khi thiết lập môi trường, bạn có thể tải source code và bắt đầu biên dịch. Dưới đây là các ví dụ phổ biến.
Biên dịch ImageMagick
ImageMagick là thư viện xử lý ảnh mạnh mẽ, phụ thuộc cho extension PHP imagick
. ServBay đã cài ImageMagick sẵn; ví dụ sau chỉ minh họa quy trình biên dịch với môi trường ServBay.
macOS / Linux
Tải và giải nén source ImageMagick:
bash# Cập nhật version theo nhu cầu 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
4Chạy script
./configure
: Dùng biến môi trường đã thiết lập và các tham số như--prefix
,--libdir
,--includedir
trỏ về thư mục ServBay Development Library tương ứng, để các thư viện và header được biên dịch vào đúng nơi cho môi trường ServBay sử dụng.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
30Chạy lệnh
make
&make install
: Tham số-j ${CPU_NUMBER}
để tận dụng đa nhân khi biên dịch. Lệnhmake install
sẽ copy file đã build vào thư mục được chỉ định.bashmake -j ${CPU_NUMBER} make install
1
2
Windows
Ở Windows, thường biên dịch ImageMagick bằng Visual Studio hoặc CMake (phương pháp khuyên dùng):
Tải source ImageMagick:
powershell# Dùng curl hoặc tải từ trình duyệt curl -O https://imagemagick.org/archive/releases/ImageMagick-7.1.1-33.tar.gz # Giải nén (cần 7zip hoặc phần mềm tương tự) tar -xzf ImageMagick-7.1.1-33.tar.gz cd ImageMagick-7.1.1-33
1
2
3
4
5Cấu hình với CMake (ở PowerShell hoặc Developer Command Prompt):
powershell# Tạo thư mục build mkdir builddir cd builddir # Cấu hình với 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
18Build và cài đặt:
powershell# Biên dịch cmake --build . --config Release --parallel $CPU_NUMBER # Cài đặt cmake --install . --config Release
1
2
3
4
Biên dịch phần mềm với cmake
Các gói dùng hệ thống build cmake
có quy trình khá tương tự trên mọi nền tảng. Ví dụ minh họa với protobuf
(Protocol Buffers):
- Tải source protobuf và chuyển vào thư mục nguồn.
macOS / Linux
Cấu hình với cmake: -S . chỉ thư mục nguồn, -B builddir là thư mục build. -DCMAKE_INSTALL_PREFIX v.v. sẽ trỏ về thư mục ServBay Development Library.
bash# Đã ở thư mục protobuf source 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
21Build & install:
bashcmake --build builddir -j ${CPU_NUMBER} cmake --install builddir
1
2
Windows
Cấu hình với cmake (ở PowerShell hoặc Developer Command Prompt):
powershell# Đã ở thư mục protobuf source 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
12Build & install:
powershell# Biên dịch cmake --build builddir --config Release --parallel $CPU_NUMBER # Cài đặt cmake --install builddir --config Release
1
2
3
4
Biên dịch module PHP
Nếu bạn muốn biên dịch thêm extension cho một phiên bản PHP của ServBay (ví dụ: swoole
, redis
, mongodb
...), hãy xem hướng dẫn:
Hướng dẫn biên dịch module PHP
Biên dịch module PostgreSQL
Muốn biên dịch thêm module cho một phiên bản PostgreSQL trong ServBay, hãy tham khảo:
Hướng dẫn biên dịch module PostgreSQL
Tổng kết
ServBay cung cấp ServBay Development Library cùng với hướng dẫn thiết lập biến môi trường giúp các nhà phát triển dễ dàng biên dịch lại và tùy chỉnh phần mềm trên cả macOS và Windows. Điều này đem lại sự linh hoạt tối đa để bạn đáp ứng nhu cầu đặc thù dự án hoặc cập nhật các phiên bản thư viện mới.
Những điểm chính
- Hỗ trợ đa nền tảng: ServBay hỗ trợ biên dịch trên cả macOS và Windows
- Khác biệt về đường dẫn: (macOS:
/Applications/ServBay
, Windows:C:\ServBay
) - Khác biệt công cụ: macOS dùng Xcode Command Line Tools, Windows dùng Visual Studio Build Tools
- Cấu hình môi trường: Chọn script thiết lập biến môi trường phù hợp với nền tảng bạn dùng
Lưu ý
- Luôn đọc kỹ hướng dẫn biên dịch chính thức của từng phần mềm
- Tùy chỉnh bước cấu hình theo đặc điểm từng nền tảng
- Trên Windows nên ưu tiên hệ thống build CMake
- Một số phần mềm nguồn mở có yêu cầu hoặc phụ thuộc biên dịch khác nhau trên các nền tảng
Làm theo các hướng dẫn trên, bạn sẽ biên dịch phần mềm thành công trong môi trường ServBay trên cả hai nền tảng.