ServBay के साथ कस्टम कम्पाइलिंग
ServBay macOS और Windows उपयोगकर्ताओं के लिए एक शक्तिशाली और संपूर्ण स्थानीय वेब विकास वातावरण प्रदान करता है, जिसमें कई सॉफ़्टवेयर पैकेज और टूल शामिल हैं। ServBay द्वारा पहले से इंस्टॉल किए गए पैकेजों के अलावा, डेवलपर्स को अक्सर निम्नलिखित कारणों से कस्टम कम्पाइलिंग की आवश्यकता पड़ सकती है:
- किसी पैकेज के लिए विशेष कम्पाइलिंग विकल्प सक्षम करना।
- ServBay द्वारा डिफ़ॉल्ट रूप से शामिल न किए गए मॉड्यूल या एक्सटेंशन जोड़ना (जैसे नया PHP एक्सटेंशन या PostgreSQL मॉड्यूल)।
- ServBay डिफ़ॉल्ट संस्करण से अलग किसी विशेष लाइब्रेरी के साथ कम्पाइलिंग करना।
- ServBay द्वारा प्रदत्त सॉफ़्टवेयर पैकेज को कस्टमाइज़ करना।
ServBay आवश्यक कम्पाइलिंग पर्यावरण और टूलचेन प्रदान करता है, जिससे उपयोगकर्ता आसानी से कस्टम कम्पाइलिंग कार्य कर सकते हैं।
कस्टम कम्पाइलिंग के लिए, उपयोगकर्ता को संबंधित ऑपरेटिंग सिस्टम पर सॉफ़्टवेयर कम्पाइलिंग प्रक्रिया की मूल जानकारी होनी चाहिए:
- macOS/Linux:
configure
,make
,make install
जैसे Unix/Linux टूलचेन - Windows: Visual Studio बिल्ड सिस्टम, MSBuild, cmake आदि कम्पाइलिंग वातावरण
आवश्यक शर्तें
कस्टम कम्पाइलिंग शुरू करने से पहले, सुनिश्चित करें कि आपने निम्नलिखित तैयारियाँ की हैं:
ServBay Development Library इंस्टॉल करें: यह कस्टम कम्पाइलिंग के लिए मुख्य निर्भरता है। इस पैकेज में सभी आवश्यक लाइब्रेरी फ़ाइलें, हेडर फ़ाइलें, और अन्य संसाधन शामिल होते हैं। आप इसे ServBay ऐप के पैकेज पैनल में जाकर इंस्टॉल कर सकते हैं।
डेवलपमेंट टूलकिट इंस्टॉल करें:
macOS
Xcode Command Line Tools इंस्टॉल करें: macOS का डिफ़ॉल्ट डेवलपमेंट टूलकिट; इसमें कम्पाइलर (Clang), लिंकर्स आदि शामिल हैं। टर्मिनल खोलें और निम्नलिखित कमांड चलाएँ:
bashxcode-select --install
1यदि पहले से इंस्टॉल है, तो सिस्टम सूचित करेगा।
अतिरिक्त कम्पाइलिंग टूल इंस्टॉल करें: अधिकांश ओपन सोर्स सॉफ़्टवेयर को कम्पाइल करने के लिए
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 Build Tools
- Windows 11 SDK (नवीनतम संस्करण)
- CMake टूल
विकल्प 2: Visual Studio Community
- Visual Studio Community डाउनलोड और इंस्टॉल करें।
- इंस्टॉलेशन के दौरान "Desktop development with C++" वर्कलोड चुनें।
- सुनिश्चित करें कि CMake टूल और Windows SDK शामिल हैं।
अतिरिक्त टूल इंस्टॉल करें: कुछ ओपन सोर्स परियोजनाओं के लिए आपको आवश्यकता हो सकती है:
- Git for Windows: स्रोत कोड डाउनलोड करने के लिए
- MSYS2 या vcpkg: C/C++ लाइब्रेरी डिपेंडेंसी प्रबंधन के लिए
- Python: कुछ निर्माण स्क्रिप्ट्स के लिए
powershell# chocolatey से अतिरिक्त टूल इंस्टॉल करें (वैकल्पिक) choco install git cmake python msys2
1
2
कम्पाइलिंग पर्यावरण सेट करें
ServBay Development Library और अन्य आवश्यक टूल्स इंस्टॉल करने के बाद, आपको कम्पाइलिंग environment इनिशियलाइज़ करना होगा। इसमें मुख्यतः लोकप्रिय environment variables सेट करना शामिल हैं, ताकि कम्पाइलर और बिल्ड सिस्टम ServBay की लाइब्रेरी, हेडर फाइल और बाइनरी फाइल सही से खोज पाए और लिंक कर सके।
ऑपरेटिंग सिस्टम और आर्किटेक्चर के अनुसार environment सेटअप अलग-अलग होगा:
macOS
ServBay का रनटाइम आपके Mac के CPU आर्किटेक्चर के अनुसार अलग होता है—Intel चिप (x86_64) और Apple Silicon (Arm64)। कृपया अपने ServBay Runtime आर्किटेक्चर के अनुसार environment initialization कमांड चुनें।
Windows
Windows के लिए ServBay x64 आर्किटेक्चर को सपोर्ट करता है और डिफ़ॉल्ट रूप से C:\ServBay
फ़ोल्डर में इंस्टॉल होता है।
ServBay Runtime CPU आर्किटेक्चर जाँचें
macOS
ServBay के bin
फोल्डर में किसी executable फाइल का आर्किटेक्चर नीचे दिए गए तरीके से देखें, उदाहरण के लिए 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 में exe फाइल जाँचने के लिए:
powershell
# PowerShell में नीचे दी गई कमांड चलाएँ
PS> Get-Command "C:\ServBay\bin\bison.exe" | Select-Object -ExpandProperty FileVersionInfo | Select-Object ProductName, FileDescription
1
2
2
या फ़ाइल प्रॉपर्टीज़ में जाकर आर्किटेक्चर कन्फर्म करें।
आर्किटेक्चर तय होने के बाद, अनुकूल initialization script चुनें।
कम्पाइलिंग environment variable इनिशियलाइज़ करें
अपने OS और architecture के अनुसार environment initialization script चुनें:
macOS
नया टर्मिनल विंडो खोलें और अपने CPU architecture के लिए उपयुक्त script कॉपी-पेस्ट करें। ये scripts ServBay कम्पाइलिंग environment के लिए path और flags सेट करेंगे।
bash
# CPU कोर की संख्या सेट करें, जो parallel compilation में मदद करेगी
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 बाइनरी फाइल पथ
SERVBAY_BIN_PATH="${SERVBAY_PACKAGE_FULL_PATH}/bin"
SERVBAY_SBIN_PATH="${SERVBAY_PACKAGE_FULL_PATH}/sbin"
# ServBay config फाइल पथ
SERVBAY_ETC_PATH="${SERVBAY_PACKAGE_FULL_PATH}/etc"
# ServBay वेरिएबल data पथ
SERVBAY_VAR_PATH="${SERVBAY_PACKAGE_FULL_PATH}/var"
# ServBay Development Library इंस्टॉल स्थान
SERVBAY_COMMON_PATH="${SERVBAY_PACKAGE_FULL_PATH}/common"
# Development Library का हेडर फाइल पथ
SERVBAY_COMMON_INCLUDE_PATH="${SERVBAY_COMMON_PATH}/include"
# 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"
# बिल्ड डायरेक्टरी
SERVBAY_BUILD_DIR=$(pwd)
SERVBAY_BUILD_SRC_DIR=${SERVBAY_BUILD_DIR}/src
# OpenSSL Version info
OPENSSL_SELECTED_VERSION="3.2"
OPENSSL_VERSION="3.2.1"
# टार्गेट OS मिनिमम वर्शन
BUILD_OS_MIN_VERSION="12.00" # macOS Monterey या उससे ऊपर
# CPU आर्किटेक्चर flag
BUILD_CPU_ARCH="-arch arm64"
BUILD_CPU_ARCH_CMAKE="arm64"
BUILD_MACOS_TARGET="" # Arm64 में -target flag नहीं चाहिए
# C compiler flags — optimization, minimum macOS version, arch
export CFLAGS="-Qunused-arguments -O3 -mmacosx-version-min=${BUILD_OS_MIN_VERSION} ${BUILD_CPU_ARCH} ${BUILD_MACOS_TARGET}"
# Linker flags — runtime lib path (rpath), library path (-L), minimum version, arch
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}"
# C preprocessor और CXX compiler flags — header search path (-I)
export CPPFLAGS="-I${SERVBAY_COMMON_INCLUDE_PATH}"
# C++ compiler flags (same as CFLAGS)
export CXXFLAGS="-Qunused-arguments -O3 -mmacosx-version-min=${BUILD_OS_MIN_VERSION} ${BUILD_CPU_ARCH} ${BUILD_MACOS_TARGET}"
# PATH में प्राथमिकता के लिए ServBay के bin/sbin पथ
export PATH="${SERVBAY_BIN_PATH}:${SERVBAY_SBIN_PATH}:/usr/bin:/bin:/usr/sbin:/sbin:/Library/Apple/usr/bin"
# pkg-config search path
export PKG_CONFIG_PATH="${SERVBAY_COMMON_LIB_PATH}/pkgconfig"
# pkg-config tool path
export PKG_CONFIG="${SERVBAY_BIN_PATH}/pkg-config"
# pkg-config lib dir
export PKG_CONFIG_LIBDIR="${SERVBAY_COMMON_LIB_PATH}/pkgconfig"
# PATH में system और Homebrew directories add करें
export PATH=$PATH:"/usr/local/bin:/usr/local/sbin"
export PATH=$PATH:"/opt/homebrew/bin/" # Homebrew default path
# OpenSSL लाइब्रेरी और हेडर पथ को 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}"
# OpenSSL pkgconfig पथ add करें
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"
# Environment सेट होने के बाद, इसी टर्मिनल में कंपाइलिंग कर सकते हैं
echo "ServBay Arm64 कम्पाइलिंग environment सेट हो गया।"
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
# CPU कोर की संख्या सेट करें, जो parallel compilation में मदद करेगी
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 बाइनरी फाइल पथ
SERVBAY_BIN_PATH="${SERVBAY_PACKAGE_FULL_PATH}/bin"
SERVBAY_SBIN_PATH="${SERVBAY_PACKAGE_FULL_PATH}/sbin"
# ServBay config फाइल पथ
SERVBAY_ETC_PATH="${SERVBAY_PACKAGE_FULL_PATH}/etc"
# ServBay वेरिएबल data पथ
SERVBAY_VAR_PATH="${SERVBAY_PACKAGE_FULL_PATH}/var"
# ServBay Development Library इंस्टॉल स्थान
SERVBAY_COMMON_PATH="${SERVBAY_PACKAGE_FULL_PATH}/common"
# Development Library का हेडर फाइल पथ
SERVBAY_COMMON_INCLUDE_PATH="${SERVBAY_COMMON_PATH}/include"
# 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"
# बिल्ड डायरेक्टरी
SERVBAY_BUILD_DIR=$(pwd)
SERVBAY_BUILD_SRC_DIR=${SERVBAY_BUILD_DIR}/src
# OpenSSL Version info
OPENSSL_SELECTED_VERSION="1.1.1u"
OPENSSL_VERSION="1.1.1u"
# टार्गेट OS मिनिमम वर्शन
BUILD_OS_MIN_VERSION="12.00" # macOS Monterey या ऊपर
# CPU आर्किटेक्चर flag
BUILD_CPU_ARCH="-arch x86_64"
BUILD_CPU_ARCH_CMAKE="x86_64"
# Intel chip पर टार्गेट platform flag सेट करें
BUILD_MACOS_TARGET="-target x86_64-apple-macos${BUILD_OS_MIN_VERSION}"
# C compiler flags — optimization, minimum version, arch, platform
export CFLAGS="-Qunused-arguments -O3 -mmacosx-version-min=${BUILD_OS_MIN_VERSION} ${BUILD_CPU_ARCH} ${BUILD_MACOS_TARGET}"
# Linker flags — rpath, library path (-L), minimum version, arch, platform
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}"
# C preprocessor और CXX compiler flags — header search path
export CPPFLAGS="-I${SERVBAY_COMMON_INCLUDE_PATH}"
# C++ compiler flags (same as CFLAGS)
export CXXFLAGS="-Qunused-arguments -O3 -mmacosx-version-min=${BUILD_OS_MIN_VERSION} ${BUILD_CPU_ARCH} ${BUILD_MACOS_TARGET}"
# PATH में प्राथमिकता के लिए ServBay के bin/sbin पथ
export PATH="${SERVBAY_BIN_PATH}:${SERVBAY_SBIN_PATH}:/usr/bin:/bin:/usr/sbin:/sbin:/Library/Apple/usr/bin"
# pkg-config search path
export PKG_CONFIG_PATH="${SERVBAY_COMMON_LIB_PATH}/pkgconfig"
# pkg-config tool path
export PKG_CONFIG="${SERVBAY_BIN_PATH}/pkg-config"
# pkg-config lib dir
export PKG_CONFIG_LIBDIR="${SERVBAY_COMMON_LIB_PATH}/pkgconfig"
# PATH में system और Homebrew directories add करें
export PATH=$PATH:"/usr/local/bin:/usr/local/sbin"
export PATH=$PATH:"/opt/homebrew/bin/" # Homebrew default path
# OpenSSL लाइब्रेरी और हेडर पथ को 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}"
# OpenSSL pkgconfig पथ add करें
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"
# Environment सेट होने के बाद, इसी टर्मिनल में कंपाइलिंग कर सकते हैं
echo "ServBay x86_64 कम्पाइलिंग environment सेट हो गया।"
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
Windows प्लेटफार्म के लिए, PowerShell या Developer Command Prompt में environment variables सेट करें। यह script Windows x64 आर्किटेक्चर के लिए है:
powershell
# CPU कोर सेट करें, जो parallel compilation में मदद करेगी
$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 बाइनरी फाइल पथ
$SERVBAY_BIN_PATH = "${SERVBAY_PACKAGE_FULL_PATH}\bin"
$SERVBAY_SBIN_PATH = "${SERVBAY_PACKAGE_FULL_PATH}\sbin"
# ServBay config फाइल पथ
$SERVBAY_ETC_PATH = "${SERVBAY_PACKAGE_FULL_PATH}\etc"
# ServBay वेरिएबल data पथ
$SERVBAY_VAR_PATH = "${SERVBAY_PACKAGE_FULL_PATH}\var"
# ServBay Development Library इंस्टॉल स्थान
$SERVBAY_COMMON_PATH = "${SERVBAY_PACKAGE_FULL_PATH}\common"
# Development Library का हेडर फाइल पथ
$SERVBAY_COMMON_INCLUDE_PATH = "${SERVBAY_COMMON_PATH}\include"
# 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"
# बिल्ड डायरेक्टरी
$SERVBAY_BUILD_DIR = Get-Location
$SERVBAY_BUILD_SRC_DIR = "${SERVBAY_BUILD_DIR}\src"
# OpenSSL version info (Windows)
$OPENSSL_SELECTED_VERSION = "3.2"
$OPENSSL_VERSION = "3.2.1"
# Windows बिल्ड setting
$BUILD_PLATFORM = "x64"
$BUILD_CONFIG = "Release"
# Environment variable सेट करें
$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
# PATH environment variable सेट करें
$env:PATH = "${SERVBAY_BIN_PATH};${SERVBAY_SBIN_PATH};$env:PATH"
# कम्पाइलर संबंधित environment variable सेट करें
$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 environment variable सेट करें (यदि उपलब्ध हो)
$env:PKG_CONFIG_PATH = "${SERVBAY_COMMON_LIB_PATH}\pkgconfig"
# OpenSSL library और header path को शामिल करें
$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 संबंधित variable सेट करें
$env:CMAKE_PREFIX_PATH = $SERVBAY_COMMON_PATH
$env:CMAKE_INSTALL_PREFIX = $SERVBAY_COMMON_PATH
# Environment variable सेट हो गया
Write-Host "ServBay Windows x64 कम्पाइलिंग environment सेट हो गया।"
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
Developer Command Prompt उपयोगकर्ताओं के लिए बैच script भी उपयोग कर सकते हैं:
batch
@echo off
REM ServBay Windows कम्पाइलिंग environment सेट करें
REM ServBay बेस पथ
set SERVBAY_BASE_FULL_PATH=C:\ServBay
set SERVBAY_PACKAGE_FULL_PATH=%SERVBAY_BASE_FULL_PATH%\package
REM ServBay path सेटिंग
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 Version
set OPENSSL_SELECTED_VERSION=3.2
REM Environment variable सेट करें
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 कम्पाइलिंग environment सेट हो गया।
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
महत्वपूर्ण: ये environment variable केवल मौजूदा टर्मिनल सेशन में ही सक्रिय रहेंगे। अगर आप टर्मिनल बंद कर दें या नया टर्मिनल खोलें, तो script को दोबारा चलाएँ।
कम्पाइलिंग उदाहरण
कम्पाइलिंग environment सेट होने के बाद, आप source code डाउनलोड करके कम्पाइलिंग आरंभ कर सकते हैं। नीचे कुछ कॉमन प्लेटफार्म कम्पाइलिंग उदाहरण दिए गए हैं।
ImageMagick कम्पाइलिंग
ImageMagick एक शक्तिशाली इमेज प्रोसेसिंग लाइब्रेरी है जो PHP के imagick
एक्सटेंशन के लिए जरूरी है। ServBay इसे पहले से देता है; आमतौर पर यूजर को खुद से कम्पाइल करने की जरूरत नहीं पड़ती। यह उदाहरण केवल प्रक्रिया समझाने के लिए है।
macOS / Linux
ImageMagick source code डाउनलोड और अनजिप करें:
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
script चलाएँ: environment variable सेट होने के बाद, configure script को चलाएँ।--prefix
,--libdir
,--includedir
आदि विकल्पों द्वारा इंस्टॉल पथ सेट करें ताकि लाइब्रेरी और हेडर ServBay Development Library की डायरेक्टरी में इन्स्टॉल हों—इनका इस्तेमाल अन्य सॉफ़्टवेयर (जैसे PHP imagick एक्सटेंशन) कर सकें।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
30make
औरmake install
चलाएँ:make
से executable और लाइब्रेरी बनती हैं।-j ${CPU_NUMBER}
पैरामीटर मल्टीकोर CPU पर कम्पाइल फास्ट करता है।make install
से इन्स्टॉल साफ तय किए गए ServBay Development Library डायरेक्टरी में हो जाता है।bashmake -j ${CPU_NUMBER} make install
1
2
Windows
Windows में ImageMagick को Visual Studio या CMake के जरिए कंपाइल करना चाहिए। चूंकि Windows पर इसकी प्रक्रिया थोड़ी जटिल है, CMake तरीका सुझाया जाता है:
ImageMagick source code डाउनलोड करें और अनजिप करें:
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
5CMake से configure करें (Developer Command Prompt या PowerShell में):
powershell# build डायरेक्टरी बनाएँ mkdir builddir cd builddir # CMake से configure करें 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 source code डाउनलोड करें और उस फोल्डर में जाएँ।
macOS / Linux
cmake से configure करें:
-S .
का मतलब source code current directory है,-B builddir
का मतलब बिल्ड फाइलें builddir में बनेंगी।-DCMAKE_INSTALL_PREFIX
इत्यादि से इंस्टॉल पथ ServBay Development Library की डायरेक्टरी में सेट होते हैं। अन्य-D
option protobuf के कम्पाइलिंग विकल्प हैं।-DCMAKE_MACOSX_RPATH=1
और-DCMAKE_INSTALL_RPATH
से लाइब्रेरी ठीक से link होती है।bash# मान लें आप protobuf source dir में हैं 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
21cmake --build
औरcmake --install
चलाएँ:cmake --build builddir
से कम्पाइलिंग होती है, औरcmake --install builddir
से फाइलें ServBay Development Library में इनस्टॉल होती हैं।bashcmake --build builddir -j ${CPU_NUMBER} cmake --install builddir
1
2
Windows
PowerShell या Developer Command Prompt में cmake से configure करें:
powershell# मान लें आप protobuf source dir में हैं 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 मॉड्यूल कम्पाइलिंग
यदि ServBay के किसी PHP वर्शन के लिए आप नया एक्सटेंशन (जैसे swoole
, redis
, mongodb
आदि) कम्पाइल करना चाहते हैं, तो विशेष दस्तावेज़ देखें:
PostgreSQL मॉड्यूल कम्पाइलिंग
यदि आपको ServBay के PostgreSQL वर्शन के लिए अतिरिक्त मॉड्यूल कम्पाइल करना है, तो विशेष दस्तावेज़ देखें:
PostgreSQL मॉड्यूल कैसे कम्पाइल करें
सारांश
ServBay की Development Library और सुविधाजनक environment setup की मदद से डेवलपर्स macOS और Windows प्लेटफार्म पर सॉफ़्टवेयर पैकेज की कस्टम कम्पाइलिंग व अनुकूलन आसानी से कर सकते हैं। इससे आपको अपनी विशेष परियोजना आवश्यकताओं या नवीनतम लाइब्रेरी वर्शन के लिए लचीलापन मिलता है।
मुख्य बातें
- क्रॉस-प्लेटफार्म सपोर्ट: ServBay अब macOS और Windows दोनों के कम्पाइलिंग environment को सपोर्ट करता है।
- पथ में अंतर: इंस्टॉल पथ macOS में
/Applications/ServBay
और Windows मेंC:\ServBay
है। - टूलचेन अंतर: macOS के लिए Xcode Command Line Tools; Windows के लिए Visual Studio Build Tools।
- environment सेटअप: अपने प्लेटफार्म अनुसार environment variable configuration script चुनें।
ध्यान दें
- कम्पाइलिंग से पहले पैकेज के आधिकारिक बिल्ड गाइड ध्यान से पढ़ें।
- टार्गेट प्लेटफार्म की जरुरत के अनुसार विकल्प व स्टेप एडजस्ट करें।
- Windows में बिल्डिंग के लिए CMake को प्राथमिकता दें।
- कुछ ओपन सोर्स सॉफ़्टवेयर प्लेटफार्म अनुसार अलग बिल्ड रिक्वायरमेंट और डिपेंडेंसी रखते हैं।
इस दस्तावेज़ के दिशानिर्देशों का पालन कर आप दोनों प्लेटफार्म पर ServBay environment में सॉफ़्टवेयर पैकेज की सफल कम्पाइलिंग कर सकते हैं।