Kompilowanie binariów za pomocą Clozure Common Lisp

Biorąc pod uwagę prosty program, taki jak poniżej, jak byś:

  1. Skompilować go jako oddzielny plik obrazu, który ma być załadowany przez implementację i jakich argumentów linii poleceń użyłbyś do załadowania go?

  2. Skompiluj go jako samodzielny plik binarny, który można załadować i uruchomić tak, jak jest.

    Uwaga: próbowałem dodać ": prepend-kernel t " podczas zapisywania aplikacji tylko po to, aby błąd follow został wyrzucony.

    Error: value NIL is not of the
    expected type REAL. While executing: 
    CCL::<-2, in process Initial(0).
    
  3. Jak byś się supresował wiadomość powitalna?

    Program

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

Edit

Nie chcę odpowiadać na część mojego pytania, ale znalazłem je.

Po załadowaniu funkcji wpisz następujący tekst, aby ją skompilować:

(ccl:save-application "app")

Tworzy plik obrazu. Aby go załadować, przekazując go do typu implementacji (Uwaga: binarny 'ccl' znajduje się w mojej ścieżce systemowej);

ccl -I app

Aby uruchomić funkcję najwyższego poziomu podaj ją jako parametr

ccl -I app --eval (main)
Author: Benjamin Pollack, 2009-05-07

1 answers

Zobacz dokumentację Clozure Common Lisp pod zapisywanie aplikacji

Kompilowanie i wczytywanie plików Lisp

Możesz skompilować plik o nazwie /foo/bar.lisp wywołując

 (compile-file "/foo/bar.lisp")

Spowoduje to utworzenie pliku fasl (Szybkie Ładowanie), który zawiera kod natywny.

Możesz załadować skompilowany plik, plik fasl, za pomocą funkcji LOAD. LOAD i COMPILE-FILE są standardowymi funkcjami Common Lispu.

Tworzenie aplikacje

Kilka definicji:

  • CCL kernel : część CCL, która zapewnia usługi niskopoziomowego uruchamiania, takie jak zarządzanie pamięcią.
  • Obraz : zapisany zrzut sterty Lispu
  • Application : CCL kernel + image. To może być w jednym pliku.

Możesz zapisać aplikację, wywołując określoną funkcję CCL:

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

Spowoduje to zapisanie obrazu, który można uruchomić za pomocą jądra CCL z command shell:

ccl -I /foo/bar-image

Aby zapisać plik wykonywalny zawierający jądro, użyj tego z Lispu:

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

Możesz wywołać ten plik wykonywalny jak zwykle za pomocą /foo/bar-app z powłoki poleceń.

W Clozure Common Lisp możesz sprawdzić

*command-line-argument-list*

Dla listy podanych argumentów wiersza poleceń.

 29
Author: Rainer Joswig,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-04-22 07:26:54