2008-08-24 18 views
57

は、私はちょうどLispのを学び始めていると私は実行可能ファイルにLispコードをコンパイルしてリンクする方法を見つけ出すことはできません。Lispの実行

私はclispを使用し、clisp -cだが二つのファイル生成:

の.lib

  • .fas
  • を私は実行可能ファイルを取得するために、次は何をしますか?

+0

あなたは、コンパイルfile'を代わりに '使用することができます。 –

答えて

47

私は実際に今日これを実行しようとしていた、と私はCLISP REPLにタイピングにこれを見つけ働い:

メインは、あなたがたときに呼び出したい関数の名前です
(EXT:SAVEINITMEM "executable.exe" 
       :QUIET t 
       :INIT-FUNCTION 'main 
       :EXECUTABLE t 
       :NORC t) 

をプログラムは:QUIET tが起動バナーを抑制し、起動、および:EXECUTABLE tは、ネイティブ実行可能になります。

また、プログラムが実行されたときに、対話型のLISPプロンプトを得ることからユーザーを停止するためにあなたのメイン関数の最後で

(EXT:EXIT) 

を呼び出すことに役立ちます。

EDIT:ドキュメントを読んで、:NORC tlinkを読む)を追加することもできます。これにより、RCファイルのロードが抑制されます(たとえば、~/.clisprc.lisp)。これは、(少し適応)Lisp FAQある

+0

Mac OS X 10.9上のcclで、実行可能ファイルを作成する際に問題が発生しています。 '( - アプリケーションを保存「/フル/パス/ /保存されたアプリに」:プリペンドカーネルトン)' 生産の実行可能ファイルをダブルクリックする端末は誤りのようなものから始めて、非常に長いエラーを示すに入る:バンドルをloadiing問題:クラス名を決定してカーネルデバッガのオプションで終了することはできません。 Windows上のCCLに私は後で私は、出力ファイルをダブルクリックすることができ、それが実行され、私の定義関数を覚えて、単に関数を定義し、実行、保存するには、上記と同じ操作を行い、Mac上でCCLは、私は、画像を保存するときにも覚えていて、手動でカーネルにロードいけません –

35

*** How do I make an executable from my programme?

This depends on your implementation; you will need to consult your vendor's documentation.

  • With ECL and GCL, the standard compilation process will produce a native executable.

  • With LispWorks, see the Delivery User's Guide section of the documentation.

  • With Allegro Common Lisp, see the Delivery section of the manual.

  • etc...

However, the classical way of interacting with Common Lisp programs does not involve standalone executables. Let's consider this during two phases of the development process: programming and delivery.

Programming phase: Common Lisp development has more of an incremental feel than is common in batch-oriented languages, where an edit-compile-link cycle is common. A CL developer will run simple tests and transient interactions with the environment at the REPL (or Read-Eval-Print-Loop, also known as the listener). Source code is saved in files, and the build/load dependencies between source files are recorded in a system-description facility such as ASDF (which plays a similar role to make in edit-compile-link systems). The system-description facility provides commands for building a system (and only recompiling files whose dependencies have changed since the last build), and for loading a system into memory.

Most Common Lisp implementations also provide a "save-world" mechanism that makes it possible to save a snapshot of the current lisp image, in a form which can later be restarted. A Common Lisp environment generally consists of a relatively small executable runtime, and a larger image file that contains the state of the lisp world. A common use of this facility is to dump a customized image containing all the build tools and libraries that are used on a given project, in order to reduce startup time. For instance, this facility is available under the name EXT:SAVE-LISP in CMUCL, SB-EXT:SAVE-LISP-AND-DIE in SBCL, EXT:SAVEINITMEM in CLISP, and CCL:SAVE-APPLICATION in OpenMCL. Most of these implementations can prepend the runtime to the image, thereby making it executable.

Application delivery: rather than generating a single executable file for an application, Lisp developers generally save an image containing their application, and deliver it to clients together with the runtime and possibly a shell-script wrapper that invokes the runtime with the application image. On Windows platforms this can be hidden from the user by using a click-o-matic InstallShield type tool.

13

CLikiは同様に良い答えがあります。これを行うにはポータブルな方法についてはCreating Executables

3

を、私はroswellをお勧めします。

サポートされている実装については、rosによって移植可能な方法で実行できるプログラムを実行するためのlispスクリプトを作成できます。これは、ハッシュバング行でpythonやrubyプログラムと同様に使用できます。 SBCLとCCLロズウェルのために

ros dump executableとバイナリ実行ファイルを作成することができます。

+0

なぜこれが下落したのですか? – Thayne

0

;;しかし、それはGCL

で私のために働いていた私は、コンパイルは、Windows 10 にCLISPで作業することができませんでした私は、これは古い質問です知っているが、私が見ていLispコードは、25歳:-)

です

https://www.cs.utexas.edu/users/novak/gclwin.html

;;私のLispファイルはjugs2.lisp

GCL -compile jugs2.lisp です;; jugs2の場合は、jugs2.oというファイルが生成されます。lispのファイルには、エラー

を持っていません;; Lispインタープリタに GCL

を起動するためにパラメータなしでGCLを実行します;; .oファイルをロードしてください。

(load "jugs2.o")

;; exeを作成する

(si:save-system "jugs2")

; exeが実行されるときには、dll oncrpc.dllが必要です。 ;;これはgcl.batが作成する\ lib \ gcl-2.6.1 \ unixportフォルダにあります。

;;実行すると、main関数 (メイン)を実行するために、コール(メイン)lispの環境を示し

関連する問題