Pytanie Jak w wygodny sposób uruchomić kod SBCL pod systemem operacyjnym podobnym do Uniksa?


(David James zarówno napisał pytanie, jak i odpowiedź. Zmienię go tak, by był zgodny ze standardami Stackoverflow.)

Za pomocą SBCL możesz skompilować kod Lisp do kodu maszynowego.

Podobnie jak Java, .net, C ++, a nawet C będziesz potrzebował środowiska wykonawczego. Istnieją dwa sposoby na kompilację kodu Common Lisp.

Pierwszym z nich jest tworzenie dużych plików binarnych, co wyjaśniono w dokumentacji SBCL. Brak potrzebnego SBCL na maszynie docelowej.

Druga metoda jest bardziej elastyczna, tzn. Tworzenie kodu maszynowego w formacie FASH (FAST Load). Środowisko wykonawcze SBCL jest potrzebne na maszynie docelowej.

W jaki sposób drugi sposób działa w systemie podobnym do Uniksa?


21
2018-01-29 18:26


pochodzenie


Można udzielać odpowiedzi, które już znasz. Proszę jednak sformułować swoje pytanie jako pytanie i udziel odpowiedzi w sekcji odpowiedzi. Widzieć meta.stackexchange.com/questions/17463/... po więcej szczegółów. - Greg Hewgill
Nie mogę podać jej jako odpowiedzi, ponieważ moja reputacja jest wciąż niska. - David James
Miło jest zobaczyć, jak zaczynasz pytać o seplenienie ... używając nawiasów. - mgarciaisaia


Odpowiedzi:


(Odpowiedz przez David James :)

W naszym systemie zamierzamy wykonać dwie komendy: jedną dla wsadowego kompilowania kodu Lisp, a drugą dla łatwego uruchamiania kodu Lisp:

Korzystając z ulubionego edytora, otwórz plik o nazwie sbcl.compile. Treści powinny być:

    #!/bin/bash
    sbcl --noinform --eval "(compile-file \"$1\")" --eval "(quit)" > /dev/null

Aby skompilować pliki Lisp użyj:

    # sbcl.compile hello.lisp

Spowoduje to utworzenie hello.fasl plik.

Teraz, aby łatwo uruchomić te pliki, tworzymy nowe polecenie. Używając swojego ulubionego edytora otwórz plik o nazwie sbcl.run. Treści powinny być:

    #!/bin/bash
    sbcl --noinform --load "$1" --quit --end-toplevel-options "$@"

Teraz możesz się odwołać sbcl.run hello.fasl aby uruchomić kod natywny.

    # sbcl.run hello.fasl

Szczegóły opisano w podręczniku SBCL: Uruchamianie SBCL


25
2018-01-30 03:57



Dzięki Rainer. Edytowałeś to ładnie;) - David James
To nie działa dla mnie. Pierwszy skrypt sbcl.compile', produces a fasl, but the second script gives sh sbcl.run bar.fasl błąd krytyczny przed osiągnięciem pętli READ-EVAL-PRINT: bad toplevel option: "bar.fasl" `. - Faheem Mitha
Dla celów programistycznych możesz po prostu sbcl --script source.lisp. - mgarciaisaia


Inną opcją jest dodanie do środowiska wykonawczego wszystkich powszechnie używanych pakietów / funkcji / frameworków, a następnie zapisanie tego stanu jako nowego pliku podstawowego i użycie go jako domyślnego rdzenia podczas dalszego rozwoju. Zwykle znajduję kłopoty, które są warte, zwłaszcza, że ​​seplenienie ma możliwość zapisania stanu w pliku core w stylu VM. Po prostu stopniowo aktualizuję rdzeń wraz z rozwojem. I odbuduj / zaktualizuj rdzeń za pomocą GNU Make.


3



Czy mógłbyś przedstawić to szczegółowo? - z_axis