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 확인자 구성 경로에 대한 musl-libc 패치가 포함되어 있으며 LevelDB에 대한 스택 크기 제한 증가).
스크립트 플래그 | 설명 |
---|
-기음 | 다운로드한 tarball, zipball 등을 캐싱하기 위해 지정된 폴더를 사용합니다. |
-디 | 디버깅 기호로 컴파일하고 최적화를 비활성화합니다(느리지만 세그폴트 디버깅에 유용함) |
-디 | 분리된 디버깅 기호로 컴파일하지만 최적화는 활성화된 상태로 둡니다(분산 바이너리에 사용됨) |
-g | GD2를 컴파일합니다 |
-j | 스레드 만들기를 #으로 설정합니다. |
-엘 | 컴파일 아티팩트 캐싱을 위해 지정된 폴더를 사용합니다(신속한 재구축 및 테스트에 유용함) |
-N | 컴파일 완료 후 소스를 제거하지 마세요 |
-에스 | 모든 것을 정적으로 컴파일합니다. |
-티 | 목표 설정 |
-다섯 | PHP에서 Valgrind 지원 활성화 |
-엑스 | 크로스 컴파일을 수행하고 있음을 지정합니다. |
-피 | 지정된 주요 PocketMine-MP 버전에 대한 확장을 컴파일합니다( 4 또는 5 일 수 있음) |
예:
목표 | 인수 |
---|
리눅스64 | -t linux64 -j4 -P5 |
리눅스64, 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 바이너리를 컴파일하는 일괄 스크립트입니다. 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 | 웹 요청 | |
libyaml | https://github.com/yaml/libyaml/releases | YAML 구성 파일 구문 분석 | |
레벨DB | https://github.com/pmmp/leveldb/commits/mojang- Compatible/ | 기반암 세계 지원 | 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)에서 호스팅 |
openssl | https://github.com/openssl/openssl/releases | 기반암 패킷 암호화, 보안 웹 요청 | |
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보다 빠른 대안 | |
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를 선택한 버전으로 교체하세요. |
오후 스레드 | https://github.com/pmmp/ext-pmmpthread/releases | PHP 스레딩 | |
YAML | https://github.com/php/pecl-file_formats-yaml/tags | YAML 구성 구문 분석 | 예, -와 _의 혼합은 의도적인 것입니다. 나에게 묻지 마세요. |
레벨DB | https://github.com/pmmp/php-leveldb/commits/pmmp-mojang- Compatible/ | 기반암 세계 지원 | LEVELDB_ZLIB_RAW_COMPRESSION 지원을 제공하는 사용자 정의 버전 |
청크틸스2 | 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 배열 키에 적합한 형식으로 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-바이너리-도구 | https://github.com/php/php-sdk-binary-tools/releases | Windows에서 PHP 빌드 | |