PocketMine-MP 用のカスタム PHP ビルド スクリプト
事前に構築されたバイナリをお探しですか?リリースに移動
コンパイル.sh
MacOS および Linux プラットフォームで PHP をコンパイルするために使用される Bash スクリプト。 make autoconf automake libtool m4 wget getconf gzip bzip2 bison g++ git cmake pkg-config re2c ca-certificates
があることを確認してください。
推奨事項
- コンパイルされたバイナリをビルドするマシン上でのみ使用する場合は、最高のパフォーマンスを得るために
-t
オプションを削除してください。これにより、スクリプトが汎用マシンではなく現在のマシンに対して最適化されるようになります。 -
ext-gd2
PocketMine-MP では必要ないため、 -g
フラグが指定されない限り含まれません。ただし、プラグインで必要な場合は、 -g
使用して有効にすることを忘れないでください。 -
-c
および-l
オプションを使用すると、(スクリプトを改善するためなどに) 何度も再コンパイルする場合に、キャッシュ フォルダーを指定して再コンパイルを高速化できます。
よくある落とし穴
- スペースを含むディレクトリ ツリーではスクリプトを使用しないでください。一部のライブラリは、スペースを含むディレクトリ ツリーに構築されることを好みません。たとえば、
/home/user/my folder/pocketmine-mp/
問題が発生する可能性があります。 - 特殊な (英語以外の) シンボルを含むディレクトリ ツリーは避けてください。たとえば、
Développement
問題が発生する可能性があります。
追加の注意事項
Mac OSX (ネイティブコンパイル)
- ほとんどの依存関係は Homebrew を使用してインストールできます
- さらに
glibtool
が必要になります (GNU libtool、xcode libtool は機能しません)
Android 64 ビット (クロスコンパイル)
- Android クロスコンパイルでは、aarch64 ターゲットのみがサポートされます。
-
aarch64-linux-musl
ツールチェーンが必要です。 https://github.com/pmmp/musl-cross-make を使用してコンパイルしてインストールできます (PMMP フォークには、DNS リゾルバー構成パスと LevelDB のスタック サイズ制限の増加用の musl-libc パッチが含まれています)
スクリプトフラグ | 説明 |
---|
-c | ダウンロードされた tarball や zipball などをキャッシュするために指定されたフォルダーを使用します。 |
-d | デバッグ シンボルを使用してコンパイルし、最適化を無効にします (遅いですが、セグメンテーション違反のデバッグに役立ちます) |
-D | 分離されたデバッグ シンボルを使用してコンパイルしますが、最適化は有効のままです (分散バイナリに使用されます)。 |
-g | GD2をコンパイルします |
-j | スレッドの作成を # に設定します |
-l | コンパイル成果物をキャッシュするために指定されたフォルダーを使用します (迅速なリビルドとテストに役立ちます) |
-n | コンパイル完了後にソースを削除しないでください |
-s | すべてを静的にコンパイルします |
-t | 目標を設定する |
-v | PHP で Valgrind サポートを有効にする |
-x | クロスコンパイルを行うことを指定します |
-P | 指定された PocketMine-MP の主要バージョン ( 4 または5 ) の拡張機能をコンパイルします。 |
例:
ターゲット | 引数 |
---|
Linux64 | -t linux64 -j4 -P5 |
Linux64、PM4 | -t linux64 -j4 -P4 |
マック64 | -t mac-x86-64 -j4 -P5 |
アンドロイド-aarch64 | -t android-aarch64 -x -j4 -P5 |
Windows-コンパイル-vs.bat
Windows 上の Visual Studio を利用してソースから PHP バイナリをコンパイルするバッチ スクリプト。 Visual Studio 2019、 git
、 7z
、およびwget
PATH にインストールされていることを確認してください。
このスクリプトはパラメーターを受け入れませんが、次の環境変数が影響します。
変数 | 説明 |
---|
PHP_DEBUG_BUILD | 最適化を無効にし、詳細なデバッグ情報を含む PHP をビルドします (セグメンテーション違反のデバッグに役立ちます) |
SOURCES_PATH | ダウンロードしたソースをコンパイル用に置く場所 |
VS_EDITION | インストールされている Visual Studio のエディション、デフォルトでCommunity に設定されている |
PM_VERSION_MAJOR | 拡張機能を構築する PocketMine-MP のメジャー バージョン (デフォルトは 4 ですが、 4 または5 にすることもできます) |
開発者向け: バージョン情報ソース
図書館
パッケージ名 | バージョン情報URL | 必要な | 注意事項 |
---|
ズリブ | https://github.com/madler/zlib/tags | 圧縮 | |
GMP | https://gmplib.org/ | Bedrock パケット暗号化のための大きな整数の計算 | サービス停止を避けるためにDependencyMirrorでホストされています |
カール | https://github.com/curl/curl/releases | ウェブリクエスト | |
リビアムル | https://github.com/yaml/libyaml/releases | YAML 構成ファイルの解析 | |
レベルデータベース | https://github.com/pmmp/leveldb/commits/mojang-compatibility/ | 岩盤世界のサポート | MCPE ワールドをサポートするために必要な最小限の変更を加えた、google/leveldb に基づくカスタム バージョン |
libxml | https://gitlab.gnome.org/GNOME/libxml2/-/releases | UPnP の XML 解析サポート | サービス停止を避けるためにDependencyMirrorでホストされています |
libpng | https://sourceforge.net/projects/libpng/files/libpng16/ | php-gd、プラグインのみ使用 | サービス停止を避けるためにDependencyMirrorでホストされています |
libjpeg | https://ijg.org/ | php-gd、プラグインのみ使用 | サービス停止を避けるためにDependencyMirrorでホストされています |
オープンSSL | https://github.com/openssl/openssl/releases | Bedrock パケット暗号化、安全な Web リクエスト | |
libzip | https://github.com/nih-at/libzip/releases | リソースパック | |
スクライト3 | https://sqlite.org/download.html | プラグインのみの使用 | サービス停止を避けるためにDependencyMirrorでホストされています |
libdeflate | https://github.com/ebiggers/libdeflate/blob/master/NEWS.md | ネットワーク使用のための zlib のより高速な代替手段 | |
pthread4w | https://sourceforge.net/projects/pthreads4w/files/ | Windows の ext-pmmpthread で必要 | サービス停止を避けるためにDependencyMirrorでホストされています |
PHP と拡張機能
パッケージ名 | バージョン情報URL | 必要な | 注意事項 |
---|
PHP | https://www.php.net/releases/?json&version=8.2 | すべて | 8.2 を選択したバージョンに置き換えます |
pmmpスレッド | https://github.com/pmmp/ext-pmmpthread/releases | PHP スレッド化 | |
ヤムル | https://github.com/php/pecl-file_formats-yaml/tags | YAML 構成の解析 | はい、- と _ の組み合わせは意図的です。私に聞かないでください。 |
レベルデータベース | https://github.com/pmmp/php-leveldb/commits/pmmp-mojang-compatibility/ | 岩盤世界のサポート | LEVELDB_ZLIB_RAW_COMPRESSION サポートを提供するカスタム バージョン |
チャンクチル2 | https://github.com/pmmp/ext-chunkutils2/releases | PalettedBlockArray およびその他の低レベルのもの | |
xデバッグ | 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 座標を PHP 配列キーに適した形式で int にパックする | パフォーマンスに必要な |
xxハッシュ | https://github.com/pmmp/ext-xxhash/releases | 現在は使用されていません | 最近のバージョンの PHP ではhash() に置き換えることができますが、この拡張機能のパフォーマンスははるかに優れています。 |
配列デバッグ | https://github.com/pmmp/ext-arraydebug/tags | 配列ハッシュ衝突のデバッグ | |
エンコーディング | https://github.com/pmmp/ext-encoding/releases | 現在は使用されていません | 実験的で、 BinaryUtils 置き換えることを目的としていましたが、完成しませんでした。 |
その他
パッケージ名 | バージョン情報URL | 必要な | 注意事項 |
---|
php-sdk-binary-tools | https://github.com/php/php-sdk-binary-tools/releases | Windows 上で PHP を構築する | |