Skrip pembuatan PHP khusus untuk PocketMine-MP
Mencari biner bawaan? Buka rilis
kompilasi.sh
Skrip Bash digunakan untuk mengkompilasi PHP pada platform MacOS dan Linux. Pastikan Anda telah make autoconf automake libtool m4 wget getconf gzip bzip2 bison g++ git cmake pkg-config re2c ca-certificates
.
Rekomendasi
- Jika Anda akan menggunakan biner yang dikompilasi hanya pada mesin tempat Anda membuatnya, hapus opsi
-t
untuk kinerja terbaik - ini akan memungkinkan skrip untuk mengoptimalkan mesin saat ini daripada mesin generik. -
ext-gd2
TIDAK disertakan kecuali flag -g
disediakan, karena PocketMine-MP tidak memerlukannya. Namun, jika plugin Anda membutuhkannya, jangan lupa untuk mengaktifkannya menggunakan -g
. - Opsi
-c
dan -l
dapat digunakan untuk menentukan folder cache untuk mempercepat kompilasi ulang jika Anda melakukan kompilasi ulang berkali-kali (misalnya untuk memperbaiki skrip).
Kesalahan umum
- Hindari menggunakan skrip di pohon direktori yang mengandung spasi. Beberapa perpustakaan tidak suka mencoba dibangun di pohon direktori yang berisi spasi, misalnya
/home/user/my folder/pocketmine-mp/
mungkin mengalami masalah. - Hindari pohon direktori yang berisi simbol khusus (non-Inggris). Misalnya,
Développement
mungkin menimbulkan masalah.
Catatan tambahan
Mac OSX (kompilasi asli)
- Sebagian besar dependensi dapat diinstal menggunakan Homebrew
- Anda juga memerlukan
glibtool
(GNU libtool, xcode libtool tidak akan berfungsi)
Android 64-bit (kompilasi silang)
- Hanya target aarch64 yang didukung untuk kompilasi silang Android.
- Toolchain
aarch64-linux-musl
diperlukan. Anda dapat mengkompilasi dan menginstalnya menggunakan https://github.com/pmmp/musl-cross-make (garpu PMMP menyertakan patch musl-libc untuk jalur konfigurasi penyelesai DNS dan meningkatkan batas ukuran tumpukan untuk LevelDB)
Bendera skrip | Keterangan |
---|
-C | Menggunakan folder yang ditentukan untuk menyimpan tarball, zipball, dll yang diunduh. |
-D | Kompilasi dengan simbol debugging dan menonaktifkan optimasi (lambat, tetapi berguna untuk debugging segfault) |
-D | Kompilasi dengan simbol debug yang terpisah, namun membiarkan optimasi tetap aktif (digunakan untuk binari terdistribusi) |
-G | Akan mengkompilasi GD2 |
-J | Atur pembuatan thread ke # |
-l | Menggunakan folder yang ditentukan untuk menyimpan artefak kompilasi dalam cache (berguna untuk membangun kembali dan menguji dengan cepat) |
-N | Jangan menghapus sumber setelah menyelesaikan kompilasi |
-S | Akan mengkompilasi semuanya secara statis |
-T | Tetapkan sasaran |
-v | Aktifkan dukungan Valgrind di PHP |
-X | Menentukan kita sedang melakukan kompilasi silang |
-P | Mengkompilasi ekstensi untuk versi utama PocketMine-MP yang ditentukan (bisa 4 atau 5 ) |
Contoh:
Target | Argumen |
---|
linux64 | -t linux64 -j4 -P5 |
linux64, PM4 | -t linux64 -j4 -P4 |
mac64 | -t mac-x86-64 -j4 -P5 |
android-aarch64 | -t android-aarch64 -x -j4 -P5 |
windows-kompilasi-vs.bat
Skrip batch menggunakan Visual Studio di Windows untuk mengkompilasi biner PHP dari sumber. Pastikan Anda menginstal Visual Studio 2019, git
, 7z
dan wget
di PATH Anda.
Skrip ini tidak menerima parameter, namun variabel lingkungan berikut berpengaruh:
Variabel | Keterangan |
---|
PHP_DEBUG_BUILD | Menonaktifkan optimasi dan membangun PHP dengan informasi debug terperinci (berguna untuk men-debug segfault) |
SOURCES_PATH | Di mana meletakkan sumber yang diunduh untuk kompilasi |
VS_EDITION | Edisi Visual Studio terinstal, disetel ke Community secara default |
PM_VERSION_MAJOR | Versi utama PocketMine-MP untuk membuat ekstensi (defaultnya 4, bisa 4 atau 5 ) |
Untuk pengembang: Sumber info versi
Perpustakaan
Nama paket | URL info versi | Diperlukan untuk | Catatan |
---|
zlib | https://github.com/madler/zlib/tags | Kompresi | |
gmp | https://gmplib.org/ | Matematika bilangan bulat besar untuk enkripsi paket Batuan Dasar | Dihosting di DependencyMirror untuk menghindari pemadaman layanan |
keriting | https://github.com/curl/curl/releases | Permintaan web | |
libyaml | https://github.com/yaml/libyaml/releases | Mengurai file konfigurasi YAML | |
leveldb | https://github.com/pmmp/leveldb/commits/mojang-kompatibel/ | Dukungan dunia batuan dasar | Versi khusus berdasarkan google/leveldb dengan perubahan minimum yang diperlukan untuk mendukung dunia MCPE |
libxml | https://gitlab.gnome.org/GNOME/libxml2/-/releases | Dukungan penguraian XML untuk UPnP | Dihosting di DependencyMirror untuk menghindari pemadaman layanan |
libpng | https://sourceforge.net/projects/libpng/files/libpng16/ | php-gd, hanya menggunakan plugin | Dihosting di DependencyMirror untuk menghindari pemadaman layanan |
libjpeg | https://ijg.org/ | php-gd, hanya menggunakan plugin | Dihosting di DependencyMirror untuk menghindari pemadaman layanan |
opensl | https://github.com/openssl/openssl/releases | Enkripsi paket dasar, permintaan web aman | |
libzip | https://github.com/nih-at/libzip/releases | Paket sumber daya | |
sqlite3 | https://sqlite.org/download.html | Penggunaan plugin saja | Dihosting di DependencyMirror untuk menghindari pemadaman layanan |
libdeflate | https://github.com/ebiggers/libdeflate/blob/master/NEWS.md | Alternatif yang lebih cepat untuk zlib untuk penggunaan jaringan | |
pthreads4w | https://sourceforge.net/projects/pthreads4w/files/ | Dibutuhkan oleh ext-pmmpthread di Windows | Dihosting di DependencyMirror untuk menghindari pemadaman layanan |
PHP & ekstensi
Nama paket | URL info versi | Diperlukan untuk | Catatan |
---|
PHP | https://www.php.net/releases/?json&version=8.2 | Semuanya | Ganti 8.2 dengan versi pilihan Anda |
benang pmmp | https://github.com/pmmp/ext-pmmpthread/releases | rangkaian PHP | |
yaml | https://github.com/php/pecl-file_formats-yaml/tags | Penguraian konfigurasi YAML | Ya, campuran - dan _ disengaja. Jangan tanya saya. |
leveldb | https://github.com/pmmp/php-leveldb/commits/pmmp-mojang-kompatibel/ | Dukungan dunia batuan dasar | Versi khusus untuk memberikan dukungan LEVELDB_ZLIB_RAW_COMPRESSION |
chunkutils2 | https://github.com/pmmp/ext-chunkutils2/releases | PalettedBlockArray dan hal-hal tingkat rendah lainnya | |
xdebug | https://github.com/xdebug/xdebug/releases | Men-debug | Tidak diperlukan untuk produksi |
igbiner | https://github.com/igbinary/igbinary/releases | Serialisasi lebih cepat, sebagian besar untuk memindahkan barang antar thread | Tidak penting, bisa dibuang jika perlu |
kripto | https://github.com/bukka/php-crypto/tags | Enkripsi paket batuan dasar | |
penjaga rekursi | https://github.com/pmmp/ext-recursionguard/releases | Men-debug | Tidak diperlukan untuk produksi |
libdeflate | https://github.com/pmmp/ext-libdeflate/releases | Kompresi jaringan lebih cepat | Tidak penting tetapi memberikan keunggulan kinerja yang signifikan dibandingkan zlib |
morton | https://github.com/pmmp/ext-morton | Mengemas koordinat X/Z dan X/Y/Z ke dalam int dalam format yang sesuai untuk kunci array PHP | Dibutuhkan untuk kinerja |
xxhash | https://github.com/pmmp/ext-xxhash/releases | Saat ini tidak digunakan | Bisa diganti dengan hash() di versi terbaru PHP tetapi ekstensi ini memiliki kinerja yang jauh lebih baik |
debug array | https://github.com/pmmp/ext-arraydebug/tags | Men-debug tabrakan hash array | |
pengkodean | https://github.com/pmmp/ext-encoding/releases | Saat ini tidak digunakan | Eksperimental, dimaksudkan untuk menggantikan BinaryUtils tetapi tidak pernah selesai |
Lain-lain
Nama paket | URL info versi | Diperlukan untuk | Catatan |
---|
php-sdk-biner-alat | https://github.com/php/php-sdk-binary-tools/releases | Membangun PHP di Windows | |