PocketMine-MP 的自訂 PHP 建置腳本
正在尋找預先建置的二進位檔案?前往發布
編譯.sh
Bash 腳本用於在 MacOS 和 Linux 平台上編譯 PHP。確保您有make autoconf automake libtool m4 wget getconf gzip bzip2 bison g++ git cmake pkg-config re2c ca-certificates
。
建議
- 如果您打算僅在建置它的機器上使用編譯後的二進位文件,請刪除
-t
選項以獲得最佳效能 - 這將允許腳本針對當前機器而不是通用機器進行最佳化。 - 除非提供
-g
標誌,否則不包括ext-gd2
,因為 PocketMine-MP 不需要它。但是,如果您的插件需要它,請不要忘記使用-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 解析器配置路徑的 musl-libc 補丁,並增加 LevelDB 的堆疊大小限制)
腳本標誌 | 描述 |
---|
-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 |
mac64 | -t mac-x86-64 -j4 -P5 |
android-aarch64 | -t android-aarch64 -x -j4 -P5 |
windows-compile-vs.bat
批次腳本利用 Windows 上的 Visual Studio 從原始程式碼編譯 PHP 二進位。確保您的 PATH 中安裝了 Visual Studio 2019、 git
、 7z
和wget
。
此腳本不接受參數,但以下環境變數會產生影響:
多變的 | 描述 |
---|
PHP_DEBUG_BUILD | 停用最佳化並使用詳細的偵錯資訊建立 PHP(對於調試段錯誤很有用) |
SOURCES_PATH | 下載的源碼放在哪裡進行編譯 |
VS_EDITION | 安裝的 Visual Studio 版本,預設為Community |
PM_VERSION_MAJOR | 用於建構擴充功能的 PocketMine-MP 主要版本(預設為 4,可以是4 或5 ) |
對於開發人員:版本資訊來源
圖書館
包裝名稱 | 版本資訊網址 | 需要用於 | 筆記 |
---|
茲庫 | https://github.com/madler/zlib/tags | 壓縮 | |
良好生產規範 | 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-相容/ | 基岩世界支持 | 基於 google/leveldb 的自訂版本,只需進行最少的更改即可支援 MCPE 世界 |
庫檔案 | https://gitlab.gnome.org/GNOME/libxml2/-/releases | UPnP 的 XML 解析支持 | 託管在 DependencyMirror 以避免服務中斷 |
庫檔案 | https://sourceforge.net/projects/libpng/files/libpng16/ | php-gd,僅使用插件 | 託管在 DependencyMirror 以避免服務中斷 |
庫檔案 | https://ijg.org/ | php-gd,僅使用插件 | 託管在 DependencyMirror 以避免服務中斷 |
開放式SSL | https://github.com/openssl/openssl/releases | 基岩資料包加密,安全 Web 請求 | |
解壓縮 | https://github.com/nih-at/libzip/releases | 資源包 | |
sqlite3 | https://sqlite.org/download.html | 限插件使用 | 託管在 DependencyMirror 以避免服務中斷 |
解壓縮 | https://github.com/ebiggers/libdeflate/blob/master/NEWS.md | 網路使用中 zlib 的更快替代方案 | |
pthreads4w | https://sourceforge.net/projects/pthreads4w/files/ | Windows 上的 ext-pmmpthread 需要 | 託管在 DependencyMirror 以避免服務中斷 |
PHP 和擴充
包裝名稱 | 版本資訊網址 | 需要用於 | 筆記 |
---|
PHP | https://www.php.net/releases/?json&version=8.2 | 一切 | 將 8.2 替換為您選擇的版本 |
執行緒 | https://github.com/pmmp/ext-pmmpthread/releases | PHP 執行緒 | |
yaml | https://github.com/php/pecl-file_formats-yaml/tags | YAML設定解析 | 是的,- 和 _ 的混合是故意的。別問我。 |
水平資料庫 | https://github.com/pmmp/php-leveldb/commits/pmmp-mojang-相容/ | 基岩世界支持 | 自訂版本提供LEVELDB_ZLIB_RAW_COMPRESSION 支持 |
chunkutils2 | https://github.com/pmmp/ext-chunkutils2/releases | PalettedBlockArray 和其他低階內容 | |
偵錯 | https://github.com/xdebug/xdebug/releases | 偵錯 | 生產不需要 |
二進位 | https://github.com/igbinary/igbinary/releases | 更快的序列化,主要用於在執行緒之間移動內容 | 非必要,必要時可放棄 |
加密貨幣 | https://github.com/bukka/php-crypto/tags | 基岩資料包加密 | |
遞歸衛士 | https://github.com/pmmp/ext-recursionguard/releases | 偵錯 | 生產不需要 |
解壓縮 | https://github.com/pmmp/ext-libdeflate/releases | 更快的網路壓縮 | 非必需但比 zlib 提供顯著的效能優勢 |
莫頓 | https://github.com/pmmp/ext-morton | 將 X/Z 和 X/Y/Z 座標打包為適合 PHP 陣列鍵的格式的整數 | 性能所需 |
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 但從未完成 |
雜項
包裝名稱 | 版本資訊網址 | 需要用於 | 筆記 |
---|
php-sdk-二進位工具 | https://github.com/php/php-sdk-binary-tools/releases | 在 Windows 上建立 PHP | |