PHP بناء البرامج النصية المخصصة لPocketMine-MP
هل تبحث عن الثنائيات المعدة مسبقًا؟ توجه إلى الإصدارات
compil.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)
أندرويد 64 بت (ترجمة متقاطعة)
- يتم دعم أهداف aarch64 فقط للترجمة المشتركة لنظام Android.
- مطلوب سلسلة أدوات
aarch64-linux-musl
. يمكنك تجميعه وتثبيته باستخدام https://github.com/pmmp/musl-cross-make (تتضمن شوكة PMMP تصحيحات musl-libc لمسار تكوين محلل DNS وزيادة حد حجم المكدس لـ LevelDB)
أعلام البرنامج النصي | وصف |
---|
-ج | يستخدم المجلد المحدد للتخزين المؤقت لكرات القطران والكرات المضغوطة وما إلى ذلك. |
-د | يتم تجميعه باستخدام رموز تصحيح الأخطاء وتعطيل التحسينات (بطيئة، ولكنها مفيدة لتصحيح أخطاء segfaults) |
-د | يجمع مع رموز تصحيح الأخطاء المنفصلة، لكنه يترك التحسينات ممكنة (تستخدم للثنائيات الموزعة) |
-ز | سيتم تجميع GD2 |
-ي | اضبط إنشاء المواضيع على # |
-ل | يستخدم المجلد المحدد للتخزين المؤقت لعناصر التجميع (مفيد لإعادة البناء والاختبار السريع) |
-ن | لا تقم بإزالة المصادر بعد الانتهاء من التجميع |
-س | سيتم تجميع كل شيء بشكل ثابت |
-ر | تحديد الهدف |
-v | تمكين دعم Valgrind في PHP |
-x | يحدد أننا نقوم بالترجمة المتقاطعة |
-ص | تجميع الملحقات لإصدار PocketMine-MP الرئيسي المحدد (يمكن أن يكون 4 أو 5 ) |
مثال:
هدف | الحجج |
---|
لينكس64 | -t linux64 -j4 -P5 |
لينكس 64، PM4 | -t linux64 -j4 -P4 |
mac64 | -t mac-x86-64 -j4 -P5 |
android-aarch64 | -t android-aarch64 -x -j4 -P5 |
ويندوز ترجمة مقابل.bat
برنامج نصي دفعي يستخدم Visual Studio على نظام التشغيل Windows لتجميع ثنائيات 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 | طلبات الويب | |
libyaml | https://github.com/yaml/libyaml/releases | تحليل ملفات التكوين YAML | |
.leveldb | https://github.com/pmmp/leveldb/commits/mojang-compatible/ | دعم العالم الأساسي | إصدار مخصص يعتمد على 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 لتجنب انقطاع الخدمة |
opensl | 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 لاستخدام الشبكة | |
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 بالإصدار الذي اخترته |
com.pmmpthread | https://github.com/pmmp/ext-pmmpthread/releases | خيوط PHP | |
yaml | https://github.com/php/pecl-file_formats-yaml/tags | تحليل تكوين YAML | نعم، الخلط بين - و _ مقصود. لا تسألني. |
.leveldb | https://github.com/pmmp/php-leveldb/commits/pmmp-mojang-compatible/ | دعم العالم الأساسي | إصدار مخصص لتوفير دعم LEVELDB_ZLIB_RAW_COMPRESSION |
Chunkutils2 | https://github.com/pmmp/ext-chunkutils2/releases | PalettedBlockArray وغيرها من الأشياء ذات المستوى المنخفض | |
com.xdebug | https://github.com/xdebug/xdebug/releases | تصحيح الأخطاء | ليست هناك حاجة للإنتاج |
igbinary | https://github.com/igbinary/igbinary/releases | تسلسل أسرع، غالبًا لنقل الأشياء بين سلاسل الرسائل | غير ضروري، ويمكن التخلص منه إذا لزم الأمر |
تشفير | https://github.com/bukka/php-crypto/tags | تشفير الحزمة الأساسية | |
com.recursionguard | 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 في ints بتنسيق مناسب لمفاتيح صفيف PHP | اللازمة للأداء |
com.xxxhash | https://github.com/pmmp/ext-xxhash/releases | غير مستخدم حاليا | يمكن استبداله بـ hash() في الإصدارات الأخيرة من PHP ولكن هذا الامتداد يتمتع بأداء أفضل بكثير |
com.raydebug | 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 | بناء PHP على نظام التشغيل Windows | |