تجميع ثنائيات مع Clozure Common Lisp
-
08-07-2019 - |
سؤال
نظرا برنامج بسيط مثل التالية ، كيف:
تجميع أنها منفصلة صورة الملف ليتم تحميلها من خلال تنفيذ ما وسيطات سطر الأوامر يمكنك استخدام لتحميله ؟
تجميع بذاتها الثنائية التي يمكن تحميلها و تشغيلها كما هو.
ملاحظة:حاولت مضيفا ":prepend-نواة t" عند حفظ التطبيق إلا أن يكون الخطأ اتبع القيت.
Error: value NIL is not of the expected type REAL. While executing: CCL::<-2, in process Initial(0).
كيف تقمع الترحيب الرسالة ؟
البرنامج
(defun main () (format t "This is the program.")0)
تحرير
أكره أن الإجابة على جزء من سؤالي, ولكن وجدت أنه لا شيء أقل.
بعد وظيفة تم تحميل اكتب ما يلي ترجمة ذلك:
(ccl:save-application "app")
يؤدي هذا إلى إنشاء ملف صورة.لتحميله عن طريق تمرير إلى تنفيذ نوع (ملاحظة:في 'المركز' الثنائية في مسار النظام);
ccl -I app
لتشغيل أعلى مستوى وظيفة تمر كمعلمة
ccl -I app --eval (main)
المحلول
ترى Clozure Common Lisp الوثائق تحت توفير التطبيقات
تجميع و تحميل اللثغة الملفات
يمكنك تجميع ملف اسمه /foo/bar.lisp
من خلال الدعوة
(compile-file "/foo/bar.lisp")
وهذا خلق fasl (تحميل سريع) الملف الذي يحتوي على التعليمات البرمجية الأصلية.
يمكنك تحميل الملف تم تجميعها ، fasl الملف مع وظيفة LOAD
. LOAD
و COMPILE-FILE
هي المعيار Common Lisp وظائف.
إنشاء تطبيقات
بعض التعاريف:
- CCL النواة:جزء من CCL التي توفر مستوى منخفض أوقات التشغيل خدمات مثل إدارة الذاكرة.
- صورة:حفظ تفريغ اللثغة كومة
- التطبيق:CCL النواة + صورة.هذا يمكن أن يكون في ملف واحد.
يمكنك حفظ الطلب عن طريق الاتصال CCL وظيفة محددة:
(save-application "/foo/bar-image" :toplevel-function #'main)
هذا سيوفر صورة, التي يمكن تشغيلها باستخدام CCL نواة من قذيفة القيادة:
ccl -I /foo/bar-image
حفظ تنفيذي يتضمن نواة استخدام هذه اللثغة:
(save-application "/foo/bar-app"
:toplevel-function #'main
:prepend-kernel t)
يمكنك استدعاء هذا الملف القابل للتنفيذ كالعادة مع /foo/bar-app
من الأوامر قذيفة.
في Clozure Common Lisp يمكنك التحقق
*command-line-argument-list*
للحصول على قائمة من توفير وسيطات سطر الأوامر.