تخطَّ إلى المحتوى

19. بناء ملف مستقل

أن تبني من برنامجك ملفاً تنفيذياً واحداً تعطيه لغيرك، فيشغّله دون أن يثبّت ميم.

  • meem برنامج.م يترجم البرنامج ويشغّله فوراً، للتجربة.
  • meem build برنامج.م -o برنامج يكتب ملفاً تنفيذياً: ./برنامج يعمل وحده.
  • الملف ساكن افتراضياً: فيه مكتبة C (musl) كلها، فلا يطلب شيئاً من الجهاز. و--dynamic يبنيه حركياً بمكتبة C للنظام (أصغر، وأسرع أحياناً في البرامج الكثيرة الحجز، لكنه يحتاج glibc على الجهاز).
  • وسائط البرنامج تأتي بعد -- في التشغيل المباشر (meem برنامج.م -- سلمى)، وبعد اسم الملف المبني (./برنامج سلمى).
نافذة الطرفية
meem build عداد.م -o عداد
./عداد

عند بناء هذا الموقع بُني المثال التالي فعلاً، وشُغّل الملف الناتج وحده، وطابق مخرجه مخرج التشغيل المباشر:

عداد.م
لكل ع في مدى(1, 4):
اطبع("العدّ: ", ع)
مخرجات مسجّلة من المجمّعmeem 18_بناء.م · meem 0.10.0+b01b55f
العدّ: 1العدّ: 2العدّ: 3

بُني أيضاً بـ meem build عند بناء الموقع: ملف ساكن حجمه 30.1 ك.ب، شُغّل وحده وطابق مخرجه المخرج أعلاه.

برنامج يحيّي الاسم الذي يُعطى له وسيطاً (نظام.وسائط())، ويطبع طريقة الاستعمال إن لم يُعطَ اسماً. ابنه ثم شغّله: ./تحية سلمى.

اعرض الحل
الحل
استورد نظام
و = نظام.وسائط()
اذا طول(و) == 0:
اطبع("الاستعمال: تحية <اسم>")
غير ذلك:
اطبع("أهلاً يا ", و[0], "!")
مخرجات مسجّلة من المجمّعmeem 18_حل.م -- سلمى · meem 0.10.0+b01b55f
أهلاً يا سلمى!

بُني أيضاً بـ meem build عند بناء الموقع: ملف ساكن حجمه 40.3 ك.ب، شُغّل وحده وطابق مخرجه المخرج أعلاه.

  • برنامج يستدعي بـ خارجي مكتبة C غير مكتبة C القياسية (مثل zlib) لا يُبنى ساكناً: ابنه بـ --dynamic، ولتكن المكتبة مثبَّتة على الجهاز الذي يشغّله.
  • الملف المبني للينكس x86_64 وحده. ويندوز وماك غير متاحين في 1.0.

البناء: meem build · خيارات سطر الأوامر