ServBay के साथ पुनः-संकलन कैसे करें
ServBay macOS उपयोगकर्ताओं के लिए एक शक्तिशाली और पूर्ण स्थानीय वेब विकास वातावरण प्रदान करता है, जिसमें बहुत सारे सॉफ़्टवेयर पैकेज और टूल्स शामिल हैं। ServBay द्वारा पूर्व-स्थापित सॉफ़्टवेयर पैकेज वर्शन के अलावा, कभी-कभी डेवलपर्स को विशेष आवश्यकताओं के अनुसार पैकेज का पुनः-संकलन करना पड़ सकता है, जैसे कि:
- किसी पैकेज के लिए विशेष संकलन विकल्प सक्षम करना।
- ServBay में डिफ़ॉल्ट रूप से शामिल न किए गए मॉड्यूल या एक्सटेंशन जोड़ना (जैसे नए PHP एक्सटेंशन या PostgreSQL मॉड्यूल)।
- ServBay के डिफ़ॉल्ट वर्शन से भिन्न किसी लाइब्रेरी का उपयोग करके संकलन करना।
- ServBay द्वारा प्रदान किए गए पैकेज में अनुकूलन या आसपासिक परिवर्तन करना।
ServBay आवश्यक संकलन वातावरण और टूलचेन प्रदान करता है जिससे उपयोगकर्ता इन पुनः-संकलन कार्यों को आसानी से कर सकते हैं।
सफल पुनः-संकलन के लिए, उपयोगकर्ता को Unix/Linux वातावरण में सॉफ़्टवेयर संकलन प्रक्रिया (जैसे configure
, make
, make install
) की मूल समझ होनी चाहिए।
आवश्यकताएँ
पुनः-संकलन शुरू करने से पहले, कृपया सुनिश्चित करें कि आप निम्नलिखित शर्तों को पूरा करते हैं:
ServBay Development Library स्थापित करें: यह पुनः-संकलन की मुख्य आवश्यकता है। इसमें ServBay वातावरण में संकलन के लिए सभी आवश्यक लाइब्रेरी फ़ाइलें (
.so
,.a
), हेडर फ़ाइलें (.h
) आदि शामिल हैं। आप इसे ServBay ऐप के पैकेज पैनल में खोज और इंस्टॉल कर सकते हैं।Xcode Command Line Tools इंस्टॉल करें: यह macOS द्वारा प्रदान की गई बेसिक डेवलपर टूलकिट है, जिसमें कंपाइलर (Clang), लिंकिंग टूल्स आदि आवश्यक टूल्स होते हैं। टर्मिनल खोलें और निम्नलिखित कमांड चलाएँ:
bashxcode-select --install
1यदि पहले से इंस्टॉल है, तो सिस्टम सूचित करेगा।
अतिरिक्त संकलन टूल्स इंस्टॉल करें: अधिकांश ओपन सोर्स सॉफ़्टवेयर को संकलित करने के लिए आपको
autoconf
,automake
,libtool
जैसे टूल्स की आवश्यकता होती है। इन्हें आमतौर पर Homebrew पैकेज मैनेजर के माध्यम से इंस्टॉल किया जाता है:bashbrew install autoconf automake libtool cmake
1यदि आपने अभी तक Homebrew इंस्टॉल नहीं किया है, तो कृपया Homebrew की आधिकारिक वेबसाइट के निर्देश पढ़ें।
संकलन वातावरण सेटअप करना
ServBay Development Library और अन्य सभी आवश्यक उपकरण इंस्टॉल करने के बाद, आपको टर्मिनल के संकलन वातावरण को इनिशियलाइज़ करना होगा। इसका मुख्य उद्देश्य कई पर्यावरण वेरिएबल्स (जैसे PATH
, CFLAGS
, LDFLAGS
, CPPFLAGS
) सेट करना है, जिससे कंपाइलर और बिल्ड सिस्टम को ServBay के लाइब्रेरी, हेडर और बाइनरी फ़ाइलों के स्थान का पता चल सके— ताकि वे निर्भरता सही तरीके से ढूंढ और लिंक कर सकें।
ServBay का रनटाइम वातावरण आपके Mac की CPU आर्किटेक्चर पर निर्भर करता है: Intel चिप (x86_64) या Apple Silicon चिप (Arm64)। आपको अपनी मौजूदा ServBay Runtime आर्किटेक्चर के अनुसार उपयुक्त वातावरण इनिशियलाइजेशन कमांड चुनना होगा।
ServBay Runtime CPU आर्किटेक्चर की जाँच करें
ServBay के bin
डाइरेक्टरी के किसी भी एक्जीक्यूटेबल फ़ाइल की आर्किटेक्चर देखकर पता कर सकते हैं। उदाहरण के लिए, 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
आर्किटेक्चर कन्फर्म करने के बाद, परिणाम के अनुसार उपयुक्त वातावरण इनिशियलाइजेशन स्क्रिप्ट चुनें।
संकलन पर्यावरण वेरिएबल्स इनिशियलाइज करें
नया टर्मिनल विंडो खोलें, अपनी CPU आर्किटेक्चर के अनुसार निम्नलिखित स्क्रिप्ट को कॉपी-पेस्ट करके टर्मिनल में चलाएँ। ये स्क्रिप्ट ServBay संकलन वातावरण के लिए आवश्यक सभी पथ और फ्लैग्स सेट करेंगी।
bash
# समानांतर संकलन के लिए CPU कोर संख्या सेट करें
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 कॉन्फ़िगरेशन फ़ाइलों का पथ
SERVBAY_ETC_PATH="${SERVBAY_PACKAGE_FULL_PATH}/etc"
# ServBay वेरिएबल डेटा पथ
SERVBAY_VAR_PATH="${SERVBAY_PACKAGE_FULL_PATH}/var"
# ServBay Development Library इंस्टॉलेशन पथ
SERVBAY_COMMON_PATH="${SERVBAY_PACKAGE_FULL_PATH}/common"
# ServBay Development Library हेडर फ़ाइलों का पथ
SERVBAY_COMMON_INCLUDE_PATH="${SERVBAY_COMMON_PATH}/include"
# 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"
# वर्तमान बिल्ड डाइरेक्टरी
SERVBAY_BUILD_DIR=$(pwd)
SERVBAY_BUILD_SRC_DIR=${SERVBAY_BUILD_DIR}/src
# OpenSSL वर्शन जानकारी
OPENSSL_SELECTED_VERSION="3.2"
OPENSSL_VERSION="3.2.1"
# न्यूनतम टारगेट macOS वर्शन
BUILD_OS_MIN_VERSION="12.00" # macOS Monterey या उससे अधिक
# CPU आर्किटेक्चर फ्लैग
BUILD_CPU_ARCH="-arch arm64"
BUILD_CPU_ARCH_CMAKE="arm64"
BUILD_MACOS_TARGET="" # Arm64 के लिए आमतौर पर -target फ्लैग जरूरी नहीं
# C कंपाइलर फ्लैग्स सेट करें: ऑप्टीमाइज़ेशन लेवल, न्यूनतम macOS वर्शन, आर्किटेक्चर
export CFLAGS="-Qunused-arguments -O3 -mmacosx-version-min=${BUILD_OS_MIN_VERSION} ${BUILD_CPU_ARCH} ${BUILD_MACOS_TARGET}"
# लिंकर फ्लैग्स सेट करें: रनटाइम लाइब्रेरी पथ (rpath), लाइब्रेरी सर्च पथ (-L), न्यूनतम macOS वर्शन, आर्किटेक्चर
export LDFLAGS="-Wl,-rpath -Wl,${SERVBAY_COMMON_LIB_PATH} -L${SERVBAY_COMMON_LIB_PATH} -L${SERVBAY_PACKAGE_FULL_PATH} -mmacosx-version-min=${BUILD_OS_MIN_VERSION} ${BUILD_CPU_ARCH} ${BUILD_MACOS_TARGET}"
# C प्रीप्रोसेसर और CXX कंपाइलर फ्लैग्स: हेडर सर्च पथ (-I)
export CPPFLAGS="-I${SERVBAY_COMMON_INCLUDE_PATH}"
# C++ कंपाइलर फ्लैग्स: CFLAGS के समान
export CXXFLAGS="-Qunused-arguments -O3 -mmacosx-version-min=${BUILD_OS_MIN_VERSION} ${BUILD_CPU_ARCH} ${BUILD_MACOS_TARGET}"
# एक्जीक्यूटेबल सर्च पथ: पहले ServBay के bin/sbin
export PATH="${SERVBAY_BIN_PATH}:${SERVBAY_SBIN_PATH}:/usr/bin:/bin:/usr/sbin:/sbin:/Library/Apple/usr/bin"
# pkg-config सर्च पथ: लाइब्रेरी संकलन जानकारी के लिए
export PKG_CONFIG_PATH="${SERVBAY_COMMON_LIB_PATH}/pkgconfig"
# pkg-config टूल का पथ निर्दिष्ट करें
export PKG_CONFIG="${SERVBAY_BIN_PATH}/pkg-config"
# pkg-config लाइब्रेरी डाइरेक्टरी सेट करें
export PKG_CONFIG_LIBDIR="${SERVBAY_COMMON_LIB_PATH}/pkgconfig"
# सिस्टम और Homebrew के bin/sbin को PATH में जोड़ें (बैकअप के लिए)
export PATH=$PATH:"/usr/local/bin:/usr/local/sbin"
export PATH=$PATH:"/opt/homebrew/bin/" # Homebrew का डिफ़ॉल्ट पथ
# 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 पथ जोड़ें
export PKG_CONFIG_PATH="${PKG_CONFIG_PATH}:${SERVBAY_COMMON_PATH}/openssl/${OPENSSL_SELECTED_VERSION}/lib/pkgconfig"
export PKG_CONFIG_LIBDIR="${PKG_CONFIG_LIBDIR}:${SERVBAY_COMMON_PATH}/openssl/${OPENSSL_SELECTED_VERSION}/lib/pkgconfig"
# पर्यावरण वेरिएबल्स सेट होने के बाद, आप इस टर्मिनल में संकलन कर सकते हैं
echo "ServBay Arm64 संकलन वातावरण सेट हो गया है।"
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
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 कोर संख्या सेट करें
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 कॉन्फ़िगरेशन फ़ाइलों का पथ
SERVBAY_ETC_PATH="${SERVBAY_PACKAGE_FULL_PATH}/etc"
# ServBay वेरिएबल डेटा पथ
SERVBAY_VAR_PATH="${SERVBAY_PACKAGE_FULL_PATH}/var"
# ServBay Development Library इंस्टॉलेशन पथ
SERVBAY_COMMON_PATH="${SERVBAY_PACKAGE_FULL_PATH}/common"
# ServBay Development Library हेडर फ़ाइलों का पथ
SERVBAY_COMMON_INCLUDE_PATH="${SERVBAY_COMMON_PATH}/include"
# 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"
# वर्तमान बिल्ड डाइरेक्टरी
SERVBAY_BUILD_DIR=$(pwd)
SERVBAY_BUILD_SRC_DIR=${SERVBAY_BUILD_DIR}/src
# OpenSSL वर्शन जानकारी
OPENSSL_SELECTED_VERSION="1.1.1u"
OPENSSL_VERSION="1.1.1u"
# न्यूनतम टारगेट macOS वर्शन
BUILD_OS_MIN_VERSION="12.00" # macOS Monterey या उससे अधिक
# CPU आर्किटेक्चर फ्लैग
BUILD_CPU_ARCH="-arch x86_64"
BUILD_CPU_ARCH_CMAKE="x86_64"
# टारगेट प्लेटफार्म फ्लैग (Intel CPU के लिए चाहिए)
BUILD_MACOS_TARGET="-target x86_64-apple-macos${BUILD_OS_MIN_VERSION}"
# C कंपाइलर फ्लैग्स सेट करें: ऑप्टीमाइज़ेशन लेवल, न्यूनतम macOS वर्शन, आर्किटेक्चर, टारगेट प्लेटफार्म
export CFLAGS="-Qunused-arguments -O3 -mmacosx-version-min=${BUILD_OS_MIN_VERSION} ${BUILD_CPU_ARCH} ${BUILD_MACOS_TARGET}"
# लिंकर फ्लैग्स सेट करें: रनटाइम लाइब्रेरी पथ (rpath), लाइब्रेरी सर्च पथ (-L), न्यूनतम macOS वर्शन, आर्किटेक्चर, टारगेट प्लेटफार्म
export LDFLAGS="-Wl,-rpath -Wl,${SERVBAY_COMMON_LIB_PATH} -L${SERVBAY_COMMON_LIB_PATH} -L${SERVBAY_PACKAGE_FULL_PATH} -mmacosx-version-min=${BUILD_OS_MIN_VERSION} ${BUILD_CPU_ARCH} ${BUILD_MACOS_TARGET}"
# C प्रीप्रोसेसर और CXX कंपाइलर फ्लैग्स: हेडर सर्च पथ (-I)
export CPPFLAGS="-I${SERVBAY_COMMON_INCLUDE_PATH}"
# C++ कंपाइलर फ्लैग्स: CFLAGS के समान
export CXXFLAGS="-Qunused-arguments -O3 -mmacosx-version-min=${BUILD_OS_MIN_VERSION} ${BUILD_CPU_ARCH} ${BUILD_MACOS_TARGET}"
# एक्जीक्यूटेबल सर्च पथ: पहले ServBay के bin/sbin
export PATH="${SERVBAY_BIN_PATH}:${SERVBAY_SBIN_PATH}:/usr/bin:/bin:/usr/sbin:/sbin:/Library/Apple/usr/bin"
# pkg-config सर्च पथ: लाइब्रेरी संकलन जानकारी के लिए
export PKG_CONFIG_PATH="${SERVBAY_COMMON_LIB_PATH}/pkgconfig"
# pkg-config टूल का पथ निर्दिष्ट करें
export PKG_CONFIG="${SERVBAY_BIN_PATH}/pkg-config"
# pkg-config लाइब्रेरी डाइरेक्टरी सेट करें
export PKG_CONFIG_LIBDIR="${SERVBAY_COMMON_LIB_PATH}/pkgconfig"
# सिस्टम और Homebrew के bin/sbin को PATH में जोड़ें (बैकअप के लिए)
export PATH=$PATH:"/usr/local/bin:/usr/local/sbin"
export PATH=$PATH:"/opt/homebrew/bin/" # Homebrew का डिफ़ॉल्ट पथ
# 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 पथ जोड़ें
export PKG_CONFIG_PATH="${PKG_CONFIG_PATH}:${SERVBAY_COMMON_PATH}/openssl/${OPENSSL_SELECTED_VERSION}/lib/pkgconfig"
export PKG_CONFIG_LIBDIR="${PKG_CONFIG_LIBDIR}:${SERVBAY_COMMON_PATH}/openssl/${OPENSSL_SELECTED_VERSION}/lib/pkgconfig"
# पर्यावरण वेरिएबल्स सेट होने के बाद, आप इस टर्मिनल में संकलन कर सकते हैं
echo "ServBay x86_64 संकलन वातावरण सेट हो गया है।"
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
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
महत्वपूर्ण अधिसूचना: ये पर्यावरण वेरिएबल्स केवल वर्तमान टर्मिनल सत्र में मान्य हैं। यदि आप टर्मिनल बंद करते हैं या नया टर्मिनल विंडो खोलते हैं, तो आपको अपनी वास्तुकला के अनुसार उपयुक्त स्क्रिप्ट को फिर से चलाना होगा।
संकलन उदाहरण
संकलन वातावरण सेटअप कर लेने के बाद, अब आप सोर्स कोड प्राप्त कर सकते हैं और उसका संकलन कर सकते हैं। कुछ आम उदाहरण नीचे दिए गए हैं।
ImageMagick संकलित करें
ImageMagick एक शक्तिशाली इमेज प्रोसेसिंग लाइब्रेरी है, जो PHP के imagick
एक्सटेंशन के लिए आवश्यक है। ServBay में ImageMagick डिफ़ॉल्ट रूप से शामिल है, इसलिए आमतौर पर इसे खुद से संकलित करने की आवश्यकता नहीं होती। यह उदाहरण केवल यह दिखाने के लिए है कि कैसे ServBay वातावरण में किसी सामान्य Autotools (configure/make) प्रोजेक्ट का संकलन करें।
ImageMagick सोर्स कोड डाउनलोड करके अनज़िप करें:
bash# ज़रूरत के अनुसार सबसे नया वर्शन नंबर डालें wget https://imagemagick.org/archive/releases/ImageMagick-7.1.1-33.tar.gz tar zxvf ImageMagick-7.1.1-33.tar.gz cd ImageMagick-7.1.1-33
1
2
3
4./configure
स्क्रिप्ट चलाएं: पहले सेट किए गए पर्यावरण वेरिएबल्स के साथ configure स्क्रिप्ट चलाएँ।--prefix
,--libdir
,--includedir
आदि इंस्टॉलेशन के पथ निर्दिष्ट करते हैं, जिन्हें हम ServBay Development Library के पब्लिक डिरेक्टरी${SERVBAY_COMMON_PATH}
और उसके संबंधित सबडायरेक्टरीज़ की ओर इंगित करेंगे। इससे संकलित लाइब्रेरी और हेडर फ़ाइलों को ServBay वातावरण में मौजूद अन्य सॉफ़्टवेयर (जैसे PHPimagick
एक्सटेंशन) देख सकते हैं। अन्य विकल्प ImageMagick के विशेष आवश्यकताओं के अनुसार सेट करें।bash./configure \ --prefix=${SERVBAY_COMMON_PATH} \ --libdir=${SERVBAY_COMMON_LIB_PATH} \ --includedir=${SERVBAY_COMMON_INCLUDE_PATH} \ --oldincludedir=${SERVBAY_COMMON_INCLUDE_PATH} \ --bindir=${SERVBAY_BIN_PATH} \ --sbindir=${SERVBAY_SBIN_PATH} \ --sysconfdir=${SERVBAY_ETC_PATH} \ --datarootdir=${SERVBAY_COMMON_SHARE_PATH} \ --enable-osx-universal-binary=no \ --disable-silent-rules \ --disable-opencl \ --enable-shared \ --enable-static \ --with-freetype=yes \ --with-gvc=no \ --with-modules \ --with-webp=yes \ --with-heic=no \ --without-gslib \ --with-fpx=no \ --without-openexexr \ --with-raw=yes \ --without-lqr \ --without-djvu \ --without-fftw \ --without-pango \ --without-wmf \ --without-x \ --with-gs-font-dir=${SERVBAY_COMMON_SHARE_PATH}/ghostscript/10.02.1/Resource/Font
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30make
औरmake install
चलाएं:make
कमांड, configure आउटपुट के हिसाब से एक्जीक्यूटेबल और लाइब्रेरी का संकलन करती है।-j ${CPU_NUMBER}
मल्टी-कोर CPU से संकलन को गति देता है।make install
कमांड, संकलित फाइल्स को बताई गई ServBay Development Library डिरेक्टरी में स्थापित करता है।bashmake -j ${CPU_NUMBER} make install
1
2
cmake के साथ पैकेज संकलित करना
अगर कोई सॉफ़्टवेयर पैकेज cmake
से बनता है, तो उसकी संकलन प्रक्रिया थोड़ी अलग होती है। उदाहरण के लिए protobuf
(Protocol Buffers):
protobuf का सोर्स कोड डाउनलोड करके डिरेक्टरी में जाएँ।
cmake
से प्रोजेक्ट कॉन्फ़िगर करें:-S .
का अर्थ है कि सोर्स डिरेक्टरी वर्तमान है, और-B builddir
में बिल्ड फाइलें बनेगी।-DCMAKE_INSTALL_PREFIX
सहित अन्य विकल्प Autotools के--prefix
समान कार्य करते हैं— सर्वबे डेवलपमेंट लाइब्रेरी डिरेक्टरी में इंस्टॉल करेंगे। बाकि-D
विकल्प protobuf की संकलन ज़रूरतों के अनुसार हैं।-DCMAKE_MACOSX_RPATH=1
और-DCMAKE_INSTALL_RPATH
सुनिश्चित करते हैं कि संकलित लाइब्रेरी ServBay के अन्य लाइब्रेरी को ठीक से लिंक कर पाए।bash# माना जाता है कि आप protobuf सोर्स कोड डिरेक्टरी में हैं cmake -S . -B builddir \ -DCMAKE_INSTALL_PREFIX=${SERVBAY_COMMON_PATH} \ -DCMAKE_INSTALL_LIBDIR=${SERVBAY_COMMON_LIB_PATH} \ -DCMAKE_INSTALL_INCLUDEDIR=${SERVBAY_COMMON_INCLUDE_PATH} \ -DCMAKE_INSTALL_BINDIR=${SERVBAY_BIN_PATH} \ -DCMAKE_INSTALL_SBINDIR=${SERVBAY_SBIN_PATH} \ -DCMAKE_INSTALL_SYSCONFDIR=${SERVBAY_ETC_PATH} \ -DCMAKE_INSTALL_DATAROOTDIR=${SERVBAY_COMMON_SHARE_PATH} \ -DCMAKE_MACOSX_RPATH=1 \ -DCMAKE_INSTALL_RPATH=${SERVBAY_COMMON_LIB_PATH} \ -DCMAKE_BUILD_WITH_INSTALL_RPATH=TRUE \ -DCMAKE_PREFIX_PATH=${SERVBAY_COMMON_PATH} \ -DBUILD_SHARED_LIBS=ON \ -Dprotobuf_BUILD_LIBPROTOC=ON \ -Dprotobuf_BUILD_SHARED_LIBS=ON \ -Dprotobuf_INSTALL_EXAMPLES=OFF \ -Dprotobuf_BUILD_TESTS=OFF \ -Dprotobuf_ABSL_PROVIDER=package \ -Dprotobuf_JSONCPP_PROVIDER=module \ -DCMAKE_CXX_STANDARD=17
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21cmake --build
औरcmake --install
चलाएँ:cmake --build builddir
में संकलन होगा।cmake --install builddir
संकलित फ़ाइलों को ServBay Development Library के दिए गए स्थान पर स्थापित करेगा।bashcmake --build builddir -j ${CPU_NUMBER} cmake --install builddir
1
2
PHP मॉड्यूल संकलित करना
अगर आप ServBay के किसी PHP वर्शन के लिए एक्स्ट्रा एक्सटेंशन मॉड्यूल (जैसे swoole
, redis
, mongodb
, आदि) बनाना चाहते हैं, तो कृपया संबंधित डाक्यूमेंटेशन देखें:
PostgreSQL मॉड्यूल संकलित करना
अगर आप ServBay में किसी PostgreSQL वर्शन के लिए अतिरिक्त मॉड्यूल संकलित करना चाहते हैं, तो कृपया संबंधित डाक्यूमेंटेशन देखें:
PostgreSQL मॉड्यूल कैसे संकलित करें
सारांश
ServBay द्वारा प्रदान की गई Development Library और पूरी तरह से कॉन्फ़िगर किए गए पर्यावरण वेरिएबल्स की सहायता से डेवलपर्स macOS पर सॉफ़्टवेयर पैकेज का पुनः-संकलन और अनुकूलन आसानी से कर सकते हैं। इससे आपकी विकास प्रक्रिया में अत्यधिक लचीलापन आता है— विशेष परियोजनाओं की आवश्यकता को पूरा करने या लेटेस्ट लाइब्रेरी वर्शन उपयोग करने के लिए। कृपया संकलन शुरू करने से पहले सॉफ़्टवेयर पैकेज की ऑफिशियल बिल्ड गाइड ध्यानपूर्वक पढ़ें और आवश्यकतानुसार अपनी कॉन्फ़िगरेशन व स्टेप्स एडजस्ट करें।