59

Lisp の学習を始めたばかりで、Lisp コードをコンパイルして実行可能ファイルにリンクする方法がわかりません。

私は2つのファイルを使用clispしてclisp -c生成しています:

  • .fas
  • .lib

実行可能ファイルを取得するには、次に何をすればよいですか?

4

6 に答える 6

48

私は実際に今日これをやろうとしていました.CLisp REPLにこれを入力するとうまくいきました:

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

ここで、main は、プログラムの起動時に呼び出す関数の名前で、:QUIET tスタートアップ バナーを抑制し:EXECUTABLE t、ネイティブ実行可能ファイルを作成します。

呼び出すことも役立ちます。

(EXT:EXIT)

プログラムが完了したときにユーザーがインタラクティブなlispプロンプトを取得しないようにするために、メイン関数の最後に。

編集:ドキュメントを読んで、追加することもできます(リンク:NORC tを 読む)。これにより、RC ファイル (たとえば、) のロードが抑制されます。~/.clisprc.lisp

于 2008-08-24T23:10:00.980 に答える
36

これはLisp の FAQです(わずかに変更されています):

*** プログラムから実行可能ファイルを作成するには?

これは実装によって異なります。ベンダーのドキュメントを参照する必要があります。

  • ECL と GCL を使用すると、標準のコンパイル プロセスでネイティブの実行可能ファイルが生成されます。

  • LispWorks については、ドキュメントの Delivery User's Guideセクションを参照してください。

  • Allegro Common Lisp では、マニュアルの配信セクションを参照してください。

  • 等...

ただし、Common Lisp プログラムと対話する従来の方法には、スタンドアロンの実行可能ファイルは含まれていません。開発プロセスの 2 つのフェーズ (プログラミングと配信) でこれを考えてみましょう。

プログラミング段階: Common Lisp の開発は、編集-コンパイル-リンクのサイクルが一般的なバッチ指向の言語よりも漸進的な感じがします。CL 開発者は、REPL (または、リスナとも呼ばれる Read-Eval-Print-Loop) で環境との簡単なテストと一時的な対話を実行します 。ソース コードはファイルに保存され、ソース ファイル間のビルド/ロードの依存関係は、ASDF (編集-コンパイル-リンク システムで作成すると同様の役割を果たします) などのシステム記述機能に記録されます。システム記述機能は、システムを構築するためのコマンド (および最後の構築以降に依存関係が変更されたファイルのみを再コンパイルするためのコマンド) と、システムをメモリにロードするためのコマンドを提供します。

ほとんどの Common Lisp 実装は、現在の Lisp イメージのスナップショットを後で再起動できる形式で保存できるようにする「save-world」メカニズムも提供します。Common Lisp 環境は通常、比較的小さな実行可能ランタイムと、Lisp ワールドの状態を含む大きなイメージ ファイルで構成されます。この機能の一般的な用途は、起動時間を短縮するために、特定のプロジェクトで使用されるすべてのビルド ツールとライブラリを含むカスタマイズされたイメージをダンプすることです。たとえば、この機能は、CMUCL では EXT:SAVE-LISP、SBCL では SB-EXT:SAVE-LISP-AND-DIE、CLISP では EXT:SAVEINITMEM、OpenMCL では CCL:SAVE-APPLICATION という名前で利用できます。これらの実装のほとんどは、ランタイムをイメージの先頭に追加できるため、実行可能になります。

アプリケーション配信: アプリケーションの単一の実行可能ファイルを生成するのではなく、Lisp 開発者は通常、アプリケーションを含むイメージを保存し、それをランタイムと、場合によってはアプリケーション イメージでランタイムを呼び出すシェル スクリプト ラッパーと共にクライアントに配信します。Windows プラットフォームでは、Click-o-matic InstallShield タイプのツールを使用して、これをユーザーから隠すことができます。

于 2008-08-27T23:40:49.163 に答える
14

clisp の公式ホームページをご覧ください。この質問に答える FAQ があります。

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

于 2008-08-24T13:55:29.113 に答える
14

CLIki にも良い答えがあります:実行可能ファイルの作成

于 2009-06-25T17:32:51.513 に答える
3

これを行うポータブルな方法として、roswellをお勧めします。

サポートされている実装では、移植可能な方法で実行できるプログラムを実行するための Lisp スクリプトを作成できます。このプログラムrosは、Python や Ruby プログラムと同様にハッシュバン行で使用できます。

SBCL と CCL の場合、roswell はros dump executable.

于 2015-12-10T06:36:15.503 に答える