Frage

Ich habe gerade angefangen, Lisp zu lernen und kann nicht herausfinden, wie man Lisp-Code kompiliert und mit einer ausführbaren Datei verknüpft.

Ich benutze clisp Und clisp -c erzeugt zwei Dateien:

  • .fas
  • .lib

Was muss ich als nächstes tun, um eine ausführbare Datei zu erhalten?

War es hilfreich?

Lösung

Ich habe tatsächlich versucht, dies heute zu tun, und ich fand Typisierung dieses in die CLISP REPL gearbeitet:

(EXT:SAVEINITMEM "executable.exe"
                 :QUIET t
                 :INIT-FUNCTION 'main
                 :EXECUTABLE t
                 :NORC t)

, wo Haupt ist der Name der Funktion, die Sie aufrufen möchten, wenn das Programm startet, :QUIET t das Start Banner unterdrückt, und :EXECUTABLE t macht eine native ausführbare Datei.

Es kann auch sinnvoll sein, rufen Sie

(EXT:EXIT)

am Ende der Hauptfunktion, um den Benutzer davon ab, einen interaktiven Lisp prompt zu stoppen, wenn das Programm ausgeführt wird.

EDIT: Lesen der Dokumentation, können Sie auch :NORC t hinzufügen möchten (Lesen Sie Link ). Dies unterdrückt die RC-Datei geladen wird (zum Beispiel ~/.clisprc.lisp).

Andere Tipps

Das ist ein Lisp-FAQ (leicht angepasst):

*** Wie erstelle ich aus meinem Programm eine ausführbare Datei?

Dies hängt von Ihrer Implementierung ab;Sie müssen die Dokumentation Ihres Anbieters konsultieren.

  • Mit ECL und GCL erzeugt der Standard -Kompilierungsprozess eine native ausführbare Datei.

  • Weitere Informationen zu LispWorks finden Sie unter Benutzerhandbuch für die Lieferung Abschnitt der Dokumentation.

  • Mit Allegro Common Lisp siehe die Lieferung Abschnitt des Handbuchs.

  • usw...

Die klassische Art der Interaktion mit gemeinsamen LISP -Programmen beinhaltet jedoch keine eigenständigen Ausführbaren.Betrachten wir dies in zwei Phasen des Entwicklungsprozesses:Programmierung und Lieferung.

Programmierphase:Die gemeinsame Lisp-Entwicklung hat ein inkrementelles Gefühl, als in stapelorientierten Sprachen üblich ist, in denen ein Bearbeitungskompilierkreislauf üblich ist.Ein CL-Entwickler führt einfache Tests und vorübergehende Wechselwirkungen mit der Umgebung bei der Repl (oder Read-Eval-Print-Schleife, auch bekannt als die Hörer).Der Quellcode wird in Dateien gespeichert und die Erstellung/Ladeabhängigkeiten zwischen Quelldateien werden in einer Systemdeschreibung wie ASDF aufgezeichnet (die eine ähnliche Rolle spielt wie machen in Bearbeitungskompilenlinksystemen).Die Systemdeschreibung bietet Befehle zum Erstellen eines Systems (und nur die Neukompilierung von Dateien, deren Abhängigkeiten seit dem letzten Build geändert haben) und zum Laden eines Systems in den Speicher.

Die meisten gängigen LISP-Implementierungen bieten auch einen "Save-World" -Mechanismus, der es ermöglicht, einen Schnappschuss des aktuellen Lisp-Bildes in einer Form zu speichern, die später neu gestartet werden kann.Eine gemeinsame Lisp -Umgebung besteht im Allgemeinen aus einer relativ kleinen ausführbaren Laufzeit und einer größeren Bilddatei, die den Zustand der Lisp -Welt enthält.Eine häufige Verwendung dieser Einrichtung besteht darin, ein maßgeschneidertes Bild mit allen Build -Tools und -Bibliotheken zu entsorgen, die für ein bestimmtes Projekt verwendet werden, um die Startzeit zu verkürzen.Beispielsweise ist diese Einrichtung unter dem Namen Ext: Save-LISP in CMUCL, SB-EXD: Save-LISP-and-Die-In-SBCL, Ext: SaveInitMem in CLIP und CCL: Save-Application in OpenMCL verfügbar.Die meisten dieser Implementierungen können die Laufzeit auf das Bild vorbereiten und damit ausführbar werden.

Bewerbungszustellung:Anstatt eine einzelne ausführbare Datei für eine Anwendung zu generieren, speichern LiSP-Entwickler im Allgemeinen ein Bild, das ihre Anwendung enthält, und liefern sie zusammen mit der Laufzeit und möglicherweise einem Shell-Skript-Wrapper, der die Laufzeit mit dem Anwendungsbild aufruft.Auf Windows-Plattformen kann dies vor dem Benutzer versteckt werden, indem ein Click-O-Matic-Installationsschildtyp-Tool verwendet wird.

Werfen Sie einen Blick auf die der offiziellen clisp Homepage. Es gibt eine FAQ, die diese Frage beantwortet.

http://clisp.cons.org/impnotes/faq.html# faq-exec

CLiki hat eine gute Antwort auch: Erstellen von Executables

Für eine tragbare Art und Weise, dies zu tun, empfehle ich roswell .

Für jeden unterstützten Implementierung Sie können Lisp-Skripte erstellen, das Programm auszuführen, das von ros in einem tragbaren Weise ausgeführt werden kann, die in einer Hash-Bang-Linie verwendet werden, können in ähnlicher Weise einen Python oder Ruby-Programm zu sagen.

Für SBCL und CCL roswell können auch binäre ausführbare Dateien mit ros dump executable erstellen.

Ich weiß, das ist eine alte Frage, aber der Lisp-Code an ich suche, ist 25 Jahre alt: -)

Ich konnte nicht Kompilation arbeiten mit clisp unter Windows 10 bekommen. Aber es funktionierte für mich mit gcl .

Wenn meine Lisp-Datei ist jugs2.lisp,

gcl -compile jugs2.lisp

Dies erzeugt die Datei jugs2.o wenn jugs2.lisp Datei keine Fehler hat.

Ausführen gcl ohne Parameter die Lisp-Interpreter zu starten:

gcl

Laden Sie die .o-Datei:

(load "jugs2.o")

eine EXE-Datei zu erstellen:

(si:save-system "jugs2")

Wenn die EXE ausgeführt wird, braucht es die DLL oncrpc.dll; dies ist in dem <gcl install folder>\lib\gcl-2.6.1\unixport Ordner dass gcl.bat erstellt.

Wenn er gestartet wird es eine Lisp-Umgebung zeigt, rufen Sie (Haupt-) die Hauptfunktion ausführen (Haupt-).

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top