สคริปต์สร้าง PHP แบบกำหนดเองสำหรับ PocketMine-MP
กำลังมองหาไบนารีที่สร้างไว้ล่วงหน้าอยู่ใช่ไหม? มุ่งหน้าไปที่การเผยแพร่
คอมไพล์.sh
สคริปต์ทุบตีที่ใช้ในการรวบรวม PHP บนแพลตฟอร์ม MacOS และ Linux ตรวจสอบให้แน่ใจว่าคุณได้ make autoconf automake libtool m4 wget getconf gzip bzip2 bison g++ git cmake pkg-config re2c ca-certificates
ข้อแนะนำ
- หากคุณกำลังจะใช้ไบนารีที่คอมไพล์แล้วเฉพาะบนเครื่องที่คุณกำลังสร้างมันขึ้นมา ให้ลบตัวเลือก
-t
ออกเพื่อประสิทธิภาพที่ดีที่สุด ซึ่งจะช่วยให้สคริปต์สามารถปรับให้เหมาะสมสำหรับเครื่องปัจจุบัน แทนที่จะเป็นแบบทั่วไป - ไม่รวม
ext-gd2
เว้นแต่จะมีการระบุแฟล็ก -g
เนื่องจาก PocketMine-MP ไม่ต้องการ อย่างไรก็ตาม หากปลั๊กอินของคุณต้องการ อย่าลืมเปิดใช้งานโดยใช้ -g
- ตัวเลือก
-c
และ -l
สามารถใช้เพื่อระบุโฟลเดอร์แคชเพื่อเพิ่มความเร็วในการคอมไพล์ใหม่ หากคุณคอมไพล์ใหม่หลายครั้ง (เช่น เพื่อปรับปรุงสคริปต์)
ข้อผิดพลาดทั่วไป
- หลีกเลี่ยงการใช้สคริปต์ในแผนผังไดเร็กทอรีที่มีช่องว่าง ไลบรารีบางแห่งไม่ชอบพยายามสร้างแผนผังไดเร็กทอรีที่มีช่องว่าง เช่น
/home/user/my folder/pocketmine-mp/
อาจประสบปัญหา - หลีกเลี่ยงแผนผังไดเร็กทอรีที่มีสัญลักษณ์พิเศษ (ไม่ใช่ภาษาอังกฤษ) ตัวอย่างเช่น
Développement
อาจทำให้เกิดปัญหาได้
หมายเหตุเพิ่มเติม
Mac OSX (คอมไพล์เนทิฟ)
- การขึ้นต่อกันส่วนใหญ่สามารถติดตั้งได้โดยใช้ Homebrew
- คุณจะต้องใช้
glibtool
เพิ่มเติม (GNU libtool, xcode libtool จะไม่ทำงาน)
Android 64 บิต (ข้ามคอมไพล์)
- รองรับเฉพาะเป้าหมาย aarch64 สำหรับ Cross-Compile ของ Android
- จำเป็นต้องมี toolchain
aarch64-linux-musl
คุณสามารถคอมไพล์และติดตั้งได้โดยใช้ https://github.com/pmmp/musl-cross-make (PMMP fork มีแพทช์ musl-libc สำหรับเส้นทางการกำหนดค่าตัวแก้ไข DNS และเพิ่มขีดจำกัดขนาดสแต็กสำหรับ LevelDB)
ธงสคริปต์ | คำอธิบาย |
---|
-ค | ใช้โฟลเดอร์ที่ระบุสำหรับแคช tarballs ที่ดาวน์โหลด zipballs ฯลฯ |
-d | คอมไพล์ด้วยสัญลักษณ์การดีบักและปิดใช้งานการปรับให้เหมาะสม (ช้า แต่มีประโยชน์สำหรับการดีบัก segfaults) |
-D | คอมไพล์ด้วยสัญลักษณ์การดีบักที่แยกจากกัน แต่เปิดใช้งานการปรับให้เหมาะสม (ใช้สำหรับไบนารีแบบกระจาย) |
-ก | จะคอมไพล์ GD2 |
-เจ | ตั้งค่าให้เธรดเป็น # |
-ล | ใช้โฟลเดอร์ที่ระบุสำหรับการแคชสิ่งประดิษฐ์การคอมไพล์ (มีประโยชน์สำหรับการสร้างและการทดสอบใหม่อย่างรวดเร็ว) |
-n | อย่าลบแหล่งที่มาหลังจากรวบรวมเสร็จแล้ว |
-ส | จะรวบรวมทุกอย่างแบบคงที่ |
-ที | ตั้งเป้าหมาย |
-v | เปิดใช้งานการสนับสนุน Valgrind ใน PHP |
-x | ระบุว่าเรากำลังทำการคอมไพล์ข้าม |
-ป | รวบรวมส่วนขยายสำหรับเวอร์ชัน PocketMine-MP หลักที่ระบุ (อาจเป็น 4 หรือ 5 ก็ได้) |
ตัวอย่าง:
เป้า | ข้อโต้แย้ง |
---|
ลินุกซ์64 | -t linux64 -j4 -P5 |
ลินุกซ์64, PM4 | -t linux64 -j4 -P4 |
mac64 | -t mac-x86-64 -j4 -P5 |
หุ่นยนต์-aarch64 | -t android-aarch64 -x -j4 -P5 |
windows-คอมไพล์-vs.bat
สคริปต์ชุดที่ใช้ Visual Studio บน Windows เพื่อรวบรวมไบนารี PHP จากแหล่งที่มา ตรวจสอบให้แน่ใจว่าคุณได้ติดตั้ง Visual Studio 2019, git
, 7z
และ wget
ใน PATH ของคุณ
สคริปต์นี้ไม่ยอมรับพารามิเตอร์ แต่ตัวแปรสภาพแวดล้อมต่อไปนี้มีอิทธิพล:
ตัวแปร | คำอธิบาย |
---|
PHP_DEBUG_BUILD | ปิดใช้งานการเพิ่มประสิทธิภาพและสร้าง PHP พร้อมข้อมูลการดีบักโดยละเอียด (มีประโยชน์สำหรับการดีบัก segfaults) |
SOURCES_PATH | จะใส่แหล่งที่ดาวน์โหลดมาเพื่อรวบรวมได้ที่ไหน |
VS_EDITION | ติดตั้งรุ่น Visual Studio แล้ว ตั้งค่าเป็น Community ตามค่าเริ่มต้น |
PM_VERSION_MAJOR | PocketMine-MP เวอร์ชันหลักสำหรับสร้างส่วนขยายสำหรับ (ค่าเริ่มต้นคือ 4 หรืออาจเป็น 4 หรือ 5 ) |
สำหรับนักพัฒนา: แหล่งข้อมูลเวอร์ชัน
ห้องสมุด
ชื่อแพ็คเกจ | URL ข้อมูลเวอร์ชัน | จำเป็นสำหรับ | หมายเหตุ |
---|
ซลิบ | https://github.com/madler/zlib/tags | การบีบอัด | |
จีเอ็มพี | https://gmplib.org/ | คณิตศาสตร์จำนวนเต็มขนาดใหญ่สำหรับการเข้ารหัสแพ็กเก็ต Bedrock | โฮสต์ที่ DependencyMirror เพื่อหลีกเลี่ยงการหยุดให้บริการ |
ขด | https://github.com/curl/curl/releases | คำขอทางเว็บ | |
ลิเบียมล | https://github.com/yaml/libyaml/releases | กำลังแยกวิเคราะห์ไฟล์กำหนดค่า YAML | |
ระดับdb | https://github.com/pmmp/leveldb/commits/mojang-เข้ากันได้กับ/ | การสนับสนุนโลกหิน | เวอร์ชันที่กำหนดเองตาม google/leveldb โดยมีการเปลี่ยนแปลงที่จำเป็นขั้นต่ำเพื่อรองรับโลก MCPE |
libxml | https://gitlab.gnome.org/GNOME/libxml2/-/releases | รองรับการแยกวิเคราะห์ XML สำหรับ UPnP | โฮสต์ที่ DependencyMirror เพื่อหลีกเลี่ยงการหยุดให้บริการ |
libpng | https://sourceforge.net/projects/libpng/files/libpng16/ | php-gd ใช้ปลั๊กอินเท่านั้น | โฮสต์ที่ DependencyMirror เพื่อหลีกเลี่ยงการหยุดให้บริการ |
libjpeg | https://ijg.org/ | php-gd ใช้ปลั๊กอินเท่านั้น | โฮสต์ที่ DependencyMirror เพื่อหลีกเลี่ยงการหยุดให้บริการ |
openssl | https://github.com/openssl/openssl/releases | การเข้ารหัสแพ็กเก็ต Bedrock คำขอทางเว็บที่ปลอดภัย | |
ลิบซิป | https://github.com/nih-at/libzip/releases | ชุดทรัพยากร | |
sqlite3 | https://sqlite.org/download.html | ใช้ปลั๊กอินเท่านั้น | โฮสต์ที่ DependencyMirror เพื่อหลีกเลี่ยงการหยุดให้บริการ |
libdeflate | https://github.com/ebiggers/libdeflate/blob/master/NEWS.md | ทางเลือกที่เร็วกว่าสำหรับ zlib สำหรับการใช้งานเครือข่าย | |
pthreads4w | https://sourceforge.net/projects/pthreads4w/files/ | ต้องการโดย ext-pmmpthread บน Windows | โฮสต์ที่ DependencyMirror เพื่อหลีกเลี่ยงการหยุดให้บริการ |
PHP และส่วนขยาย
ชื่อแพ็คเกจ | URL ข้อมูลเวอร์ชัน | จำเป็นสำหรับ | หมายเหตุ |
---|
PHP | https://www.php.net/releases/?json&version=8.2 | ทุกอย่าง | แทนที่ 8.2 ด้วยเวอร์ชันที่คุณเลือก |
pmmpthread | https://github.com/pmmp/ext-pmmpthread/releases | เธรด PHP | |
yaml | https://github.com/php/pecl-file_formats-yaml/tags | การแยกวิเคราะห์การกำหนดค่า YAML | ใช่ การผสมระหว่าง - และ _ เกิดขึ้นโดยตั้งใจ อย่าถามฉัน. |
ระดับdb | https://github.com/pmmp/php-leveldb/commits/pmmp-mojang-Compatible/ | การสนับสนุนโลกหิน | เวอร์ชันที่กำหนดเองเพื่อให้การสนับสนุน LEVELDB_ZLIB_RAW_COMPRESSION |
chunkutils2 | https://github.com/pmmp/ext-chunkutils2/releases | PalettedBlockArray และเนื้อหาระดับต่ำอื่นๆ | |
xdebug | https://github.com/xdebug/xdebug/releases | การดีบัก | ไม่จำเป็นสำหรับการผลิต |
อิกไบนารี | https://github.com/igbinary/igbinary/releases | การทำให้เป็นซีเรียลไลซ์เร็วขึ้น ส่วนใหญ่ใช้สำหรับการย้ายสิ่งต่าง ๆ ระหว่างเธรด | ไม่จำเป็นก็ทิ้งได้ถ้าจำเป็น |
การเข้ารหัสลับ | https://github.com/bukka/php-crypto/tags | การเข้ารหัสแพ็กเก็ต Bedrock | |
การเรียกซ้ำ | https://github.com/pmmp/ext-recursionguard/releases | การดีบัก | ไม่จำเป็นสำหรับการผลิต |
libdeflate | https://github.com/pmmp/ext-libdeflate/releases | การบีบอัดเครือข่ายที่เร็วขึ้น | ไม่จำเป็น แต่ให้ความได้เปรียบด้านประสิทธิภาพมากกว่า zlib อย่างมาก |
มอร์ตัน | https://github.com/pmmp/ext-morton | การบรรจุพิกัด X/Z และ X/Y/Z ลงใน ints ในรูปแบบที่เหมาะสมสำหรับคีย์อาร์เรย์ PHP | จำเป็นสำหรับประสิทธิภาพ |
xxhash | https://github.com/pmmp/ext-xxhash/releases | ไม่ได้ใช้ในปัจจุบัน | อาจถูกแทนที่ด้วย hash() ใน PHP เวอร์ชันล่าสุด แต่ส่วนขยายนี้มีประสิทธิภาพที่ดีกว่ามาก |
อาร์เรย์debug | https://github.com/pmmp/ext-arraydebug/tags | การดีบักการชนกันของอาร์เรย์แฮช | |
การเข้ารหัส | https://github.com/pmmp/ext-encoding/releases | ไม่ได้ใช้ในปัจจุบัน | การทดลอง ตั้งใจจะแทนที่ BinaryUtils แต่ไม่เคยเสร็จสิ้น |
เบ็ดเตล็ด
ชื่อแพ็คเกจ | URL ข้อมูลเวอร์ชัน | จำเป็นสำหรับ | หมายเหตุ |
---|
php-sdk-binary-tools.php | https://github.com/php/php-sdk-binary-tools/releases | การสร้าง PHP บน Windows | |