2009-05-07 20 views
24

Clozure Common Lisp ile İkili Derleme

  1. uygulanması ile yüklenecek ayrı görüntü dosyası olarak derlemek ve ne komut satırı argümanları bunu yüklemek için kullanırsınız:

    nasıl olur, Aşağıdaki gibi basit bir program Verilen?

  2. Olduğu gibi yüklenebilen ve çalıştırılabilen bağımsız bir ikili olarak derleyin. Ben ekleyerek çalıştı ": başa getirebilir-çekirdek t" sadece takip hata atmış uygulamayı kaydederken

    Not.

    Error: value NIL is not of the 
    expected type REAL. While executing: 
    CCL::<-2, in process Initial(0). 
    
  3. nasıl karşılama mesajı baskılamak ki?

    Programı

    (defun main() 
        (format t "This is the program.")0) 
    

Düzenleme

kendi soru cevap kısmı istemem ama hiçbiri az buldum.

işlevi derlemek için aşağıdaki türü yüklendikten sonra:

(ccl:save-application "app") 

Bu bir resim dosyası oluşturur. Uygulama türüne geçirerek yüklemek için (not: 'ccl' ikili sistem yolumdadır);

ccl -I app 

üst düzey bir fonksiyonu bir parametre olarak geçmesi çalıştırmak için

ccl -I app --eval (main) 

cevap

28

olarak geçmesi bir üst düzey işlevi çalıştırmak için bkz Saving Applications

altında Clozure Common Lisp dokümantasyon Derleme ve yükleme Lisp dosyaları

yapabilirsiniz

'ü arayarak /foo/bar.lisp adlı bir dosyayı derleyin
(compile-file "/foo/bar.lisp") 

Bu yerli kodu içeren bir fasl (hızlı yükleme) dosyası, yaratacaktır.

Derlenmiş dosyayı, fasl dosyasını LOAD işlevine yükleyebilirsiniz. LOAD ve COMPILE-FILE standart Ortak Dudak işlevleridir.

oluşturma uygulamaları

Bazı tanımlar:

  • CCL çekirdek: hafıza yönetimi gibi düşük seviyeli çalışma zamanları hizmet veren CCL parçası.
  • Görüntü: Lisp yığın
  • Uygulama kaydedilmiş dökümü: CCL çekirdeği + görüntüsü. Bu bir dosyada olabilir.

Bir CCL belirli işlevini çağırarak bir uygulama kaydedebilirsiniz:

ccl -I /foo/bar-image 
: Bir komut kabuğu CCL çekirdeği kullanarak koşabilen Bu görüntüyü kurtaracak

(save-application "/foo/bar-image" :toplevel-function #'main) 

Çekirdeği içeren bir yürütülebilir dosyayı kaydetmek için bunu bunu Lisp'den kullanın:

(save-application "/foo/bar-app" :toplevel-function #'main :prepend-kernel t) 

Bu yürütülebilir dosyayı, her zamanki gibi bir komut kabuktan /foo/bar-app ile çağırabilirsiniz.

Clozure Common Lisp size sağlanan komut satırı bağımsız değişkenleri listesi için

*command-line-argument-list* 

kontrol edebilirsiniz.

+0

hata düzeltildi. Ayrıca, uygulama beklendiği gibi oluşturulur, ancak exe yüklemek çalıştığında bir hata mesajı "çok büyük Programı belleğe sığdırmak için" bana söylendi. Buna daha önce rastladın mı? Düzeltmeyi biliyor musun? – BlueBadger

+0

benim düzenleme, kullanım başa getirebilir-çekirdek, Windows Uygulanması dosyanın –

+0

Tüm bunları test edildi için çekirdek eklemek için görmek ve adı geçen çeşitli hatalar aldı. Sadece bir Linux makinesinde test ettim ve hepsi beklendiği gibi çalışıyor. Teşekkürler. – BlueBadger

İlgili konular