Scripts de compilación PHP personalizados para PocketMine-MP
¿Busca binarios prediseñados? Dirígete a los lanzamientos
compilar.sh
Script Bash utilizado para compilar PHP en plataformas MacOS y Linux. Asegúrese de tener make autoconf automake libtool m4 wget getconf gzip bzip2 bison g++ git cmake pkg-config re2c ca-certificates
.
Recomendaciones
- Si va a utilizar el binario compilado solo en la máquina en la que lo está compilando, elimine la opción
-t
para obtener un mejor rendimiento; esto permitirá que el script se optimice para la máquina actual en lugar de una genérica. -
ext-gd2
NO se incluye a menos que se proporcione el indicador -g
, ya que PocketMine-MP no lo necesita. Sin embargo, si sus complementos lo necesitan, no olvide habilitarlo usando -g
. - Las opciones
-c
y -l
se pueden usar para especificar carpetas de caché para acelerar la recompilación si está recompilando muchas veces (por ejemplo, para mejorar el script).
Errores comunes
- Evite utilizar el script en árboles de directorios que contengan espacios. A algunas bibliotecas no les gusta intentar construirlas en árboles de directorios que contengan espacios, por ejemplo
/home/user/my folder/pocketmine-mp/
podría experimentar problemas. - Evite árboles de directorios que contengan símbolos especiales (que no estén en inglés). Por ejemplo,
Développement
puede causar problemas.
Notas adicionales
Mac OSX (compilación nativa)
- La mayoría de las dependencias se pueden instalar usando Homebrew.
- Además necesitará
glibtool
(GNU libtool, xcode libtool no funcionará)
Android de 64 bits (compilación cruzada)
- Solo los destinos aarch64 son compatibles con la compilación cruzada de Android.
- Se requiere la cadena de herramientas
aarch64-linux-musl
. Puede compilarlo e instalarlo usando https://github.com/pmmp/musl-cross-make (la bifurcación PMMP incluye parches musl-libc para la ruta de configuración del solucionador DNS y un límite creciente de tamaño de pila para LevelDB)
Banderas de guión | Descripción |
---|
-do | Utiliza la carpeta especificada para almacenar en caché archivos comprimidos, zipballs, etc. descargados. |
-d | Compila con símbolos de depuración y deshabilita las optimizaciones (lento, pero útil para depurar errores de segmento) |
-D | Se compila con símbolos de depuración separados, pero deja las optimizaciones habilitadas (usado para binarios distribuidos) |
-gramo | compilará GD2 |
-j | Establecer crear hilos en # |
-l | Utiliza la carpeta especificada para almacenar en caché los artefactos de compilación (útil para una reconstrucción y prueba rápidas) |
-norte | No elimine las fuentes después de completar la compilación |
-s | Compilará todo estáticamente |
-t | Establecer objetivo |
-v | Habilite el soporte de Valgrind en PHP |
-incógnita | Especifica que estamos haciendo una compilación cruzada. |
-PAG | Compila extensiones para la versión principal de PocketMine-MP especificada (puede ser 4 o 5 ) |
Ejemplo:
Objetivo | Argumentos |
---|
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-compilar-vs.bat
Script por lotes que utiliza Visual Studio en Windows para compilar binarios PHP a partir de fuentes. Asegúrese de tener Visual Studio 2019, git
, 7z
y wget
instalados en su RUTA.
Este script no acepta parámetros, pero las siguientes variables de entorno influyen:
Variable | Descripción |
---|
PHP_DEBUG_BUILD | Deshabilita las optimizaciones y compila PHP con información de depuración detallada (útil para depurar errores de segmento) |
SOURCES_PATH | Dónde colocar las fuentes descargadas para su compilación |
VS_EDITION | Edición de Visual Studio instalada, configurada en Community de forma predeterminada |
PM_VERSION_MAJOR | Versión principal de PocketMine-MP para crear extensiones (el valor predeterminado es 4, puede ser 4 o 5 ) |
Para desarrolladores: fuentes de información de versión
Bibliotecas
Nombre del paquete | URL de información de versión | Necesario para | Notas |
---|
zlib | https://github.com/madler/zlib/tags | Compresión | |
gmp | https://gmplib.org/ | Grandes matemáticas enteras para el cifrado de paquetes Bedrock | Alojado en DependencyMirror para evitar interrupciones del servicio |
rizo | https://github.com/curl/curl/releases | Solicitudes web | |
libia | https://github.com/yaml/libyaml/releases | Analizando archivos de configuración YAML | |
niveldb | https://github.com/pmmp/leveldb/commits/mojang-compatible/ | Soporte mundial de Bedrock | Versión personalizada basada en google/leveldb con cambios mínimos requeridos para admitir mundos MCPE |
libxml | https://gitlab.gnome.org/GNOME/libxml2/-/releases | Soporte de análisis XML para UPnP | Alojado en DependencyMirror para evitar interrupciones del servicio |
libpng | https://sourceforge.net/projects/libpng/files/libpng16/ | php-gd, uso exclusivo del complemento | Alojado en DependencyMirror para evitar interrupciones del servicio |
libjpeg | https://ijg.org/ | php-gd, uso exclusivo del complemento | Alojado en DependencyMirror para evitar interrupciones del servicio |
abresl | https://github.com/openssl/openssl/releases | Cifrado de paquetes Bedrock, solicitudes web seguras | |
libzip | https://github.com/nih-at/libzip/releases | Paquetes de recursos | |
sqlite3 | https://sqlite.org/download.html | Uso exclusivo del complemento | Alojado en DependencyMirror para evitar interrupciones del servicio |
libdeflate | https://github.com/ebiggers/libdeflate/blob/master/NEWS.md | Alternativa más rápida a zlib para uso en red | |
pthreads4w | https://sourceforge.net/projects/pthreads4w/files/ | Necesario por ext-pmmpthread en Windows | Alojado en DependencyMirror para evitar interrupciones del servicio |
PHP y extensiones
Nombre del paquete | URL de información de versión | Necesario para | Notas |
---|
PHP | https://www.php.net/releases/?json&version=8.2 | Todo | Reemplace 8.2 con la versión elegida |
hilo pmmp | https://github.com/pmmp/ext-pmmpthread/releases | subprocesamiento PHP | |
yaml | https://github.com/php/pecl-file_formats-yaml/tags | Análisis de configuración YAML | Sí, la combinación de - y _ es intencional. No me preguntes. |
niveldb | https://github.com/pmmp/php-leveldb/commits/pmmp-mojang-compatible/ | Soporte mundial de Bedrock | Versión personalizada para proporcionar soporte LEVELDB_ZLIB_RAW_COMPRESSION |
trozosutils2 | https://github.com/pmmp/ext-chunkutils2/releases | PalettedBlockArray y otras cosas de bajo nivel | |
xdebug | https://github.com/xdebug/xdebug/releases | Depuración | No es necesario para la producción. |
igbinario | https://github.com/igbinary/igbinary/releases | Serialización más rápida, principalmente para mover cosas entre subprocesos. | No esencial, podría abandonarse si fuera necesario. |
cripto | https://github.com/bukka/php-crypto/tags | Cifrado de paquetes fundamental | |
guardia recursiva | https://github.com/pmmp/ext-recursionguard/releases | Depuración | No es necesario para la producción. |
libdeflate | https://github.com/pmmp/ext-libdeflate/releases | Compresión de red más rápida | No es esencial pero proporciona una ventaja de rendimiento significativa sobre zlib |
mortón | https://github.com/pmmp/ext-morton | Empaquetar coordenadas X/Z y X/Y/Z en enteros en un formato adecuado para claves de matriz PHP | Necesario para el rendimiento |
xhash | https://github.com/pmmp/ext-xxhash/releases | No utilizado actualmente | Podría ser reemplazado por hash() en versiones recientes de PHP pero esta extensión tiene un rendimiento mucho mejor |
depuración de matriz | https://github.com/pmmp/ext-arraydebug/tags | Depuración de colisiones hash de matrices | |
codificación | https://github.com/pmmp/ext-encoding/releases | No utilizado actualmente | Experimental, destinado a reemplazar BinaryUtils pero nunca terminado |
Varios
Nombre del paquete | URL de información de versión | Necesario para | Notas |
---|
herramientas-binarias-php-sdk | https://github.com/php/php-sdk-binary-tools/releases | Construyendo PHP en Windows | |