Пользовательские скрипты сборки PHP для PocketMine-MP
Ищете готовые двоичные файлы? Перейти к релизам
скомпилировать.sh
Скрипт Bash, используемый для компиляции 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-разрядная версия (кросс-компиляция)
- Для кросс-компиляции Android поддерживаются только целевые объекты aarch64.
- Требуется набор инструментов
aarch64-linux-musl
. Вы можете скомпилировать и установить его, используя https://github.com/pmmp/musl-cross-make (форк PMMP включает исправления musl-libc для пути конфигурации преобразователя DNS и увеличения ограничения размера стека для LevelDB)
Флаги сценария | Описание |
---|
-с | Использует папку, указанную для кэширования загруженных архивов, zip-файлов и т. д. |
-д | Компилируется с символами отладки и отключает оптимизацию (медленно, но полезно для отладки ошибок сегментов). |
-Д | Компилируется с отдельными символами отладки, но оставляет оптимизацию включенной (используется для распределенных двоичных файлов). |
-г | Соберу GD2. |
-j | Установите для создания потоков значение # |
-л | Использует папку, указанную для кэширования артефактов компиляции (полезно для быстрого восстановления и тестирования). |
-н | Не удаляйте исходники после завершения компиляции. |
-с | Скомпилируем все статически |
-т | Установить цель |
-v | Включить поддержку Valgrind в PHP |
-х | Указывает, что мы выполняем кросс-компиляцию |
-П | Компилирует расширения для указанной основной версии 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-компилировать-vs.bat
Пакетный скрипт, использующий Visual Studio в Windows для компиляции двоичных файлов 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 ) |
Для разработчиков: Источники информации о версии
Библиотеки
Название пакета | URL-адрес информации о версии | Требуется для | Примечания |
---|
zlib | 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-совместимый/ | Глобальная поддержка | Кастомная версия на основе 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, безопасные веб-запросы | |
libzip | 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-потоки | |
ямл | 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 и другие низкоуровневые вещи. | |
xdebug | 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 | Отладка | Не нужен для производства. |
libdeflate | https://github.com/pmmp/ext-libdeflate/releases | Более быстрое сжатие сети | Несущественно, но обеспечивает значительное преимущество в производительности по сравнению с zlib. |
Мортон | https://github.com/pmmp/ext-morton | Упаковка координат X/Z и X/Y/Z в целые числа в формате, подходящем для ключей массива PHP. | Нужен для производительности |
хххеш | 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 | Сборка PHP в Windows | |