2016-06-12 5 views
0

(狡猾やSCMを使用して).scm実行する方法を考え出すとバイナリにそれをコンパイルしようとした(または策略どんなスキームがするコンパイル)ギルドをコンパイル」を使用してはできません。 "、" scm "、" guile "コマンドは、Ubuntuのターミナルで実行されます。 "ギルドabc.scmをコンパイルする" ためには私が<em>abc.scm</em>ファイルを作成したファイル

、私は「出力を得る`/home/tarunmaganti/.cache/guile/ccache/2.0-LE-8-2.0/home/tarunmaganti/abc.scmを書きました.go ' " 私はこのファイルを見つけて、" ./abc.scm.go "というパーミッションが拒否されたと言います。 ./abc.scm.go:Execの形式エラー:バイナリファイルを実行することはできません」bashの - 私は「のchmod 755」または「のchmod 777」を使用して、必要な権限を付与すると
は、私のようなエラーが出ます"

scm whatever-file-name.scm」は、scmインタプリタを開くだけです。 「狡猾どんなファイル・name.scmは何もしません

公式GNU/Guileのスキームのリンクは非常に有用ではありません。

してください、私を助けて。私はしたいと思います コンパイルができない場合は、少なくともGNU/guileスキームのスクリプトファイルを実行する方法を知っておきたいと思います。またはMIT-スキーム

{私はまだUbuntuとSchemeの初心者です

答えて

1

あなたは(-sがガイルの新しいバージョンではオプションです)ガイルスクリプトを作成するために、シェバング表記を使用することができます。

#!/usr/bin/guile -s 
!# 
(display "Hello, world!\n") 

お知らせ2行目に!#。 Guileはブロックのコメントの開始として#!を扱います(#|は標準スキームにあります)。これは!#(標準スキームの|#に似ています)で終了する必要があります。

スクリプトでGuile自身にコマンドラインオプションを渡す場合は、meta switchについて読んでください。ここでは、そのような例です:

#!/usr/bin/guile \ 
-e main -s 
!# 
(define (main args) 
    (if (null? (cdr args)) 
     (format #t "Hello, world!~%") 
     (for-each (lambda (name) 
        (format #t "Hello, ~a!~%" name)) 
       (cdr args)))) 
+0

私はトップラインの慣例に従いました。私が尋ねたのは、GuileまたはSCMインタプリタを使ってスクリプトを実行する方法、またはスクリプトファイルをコンパイルして実行可能ファイルを実行する方法でした。 –

+0

@TarunMaganti少なくとも2.0以下ではなく、Guileでスタンドアロンバイナリを作成することはできません。私が推奨したシバンラインでは、スクリプトファイルを実行可能にして実行するだけです。 –

+0

ありがとうございました!しかし、ギルドコンパイルは何のために使われていますか? .scmファイルは自動的にコンパイルされます。また、スクリプトの実行方法についての参考資料を教えてください。 –

1

ガイルのコンパイラは、Javaのコンパイラのようなものです:それはその後、ガイルのVMで実行されたバイトコードを生成します。私はGuile Schemeコードからネイティブコードにまっすぐ行く方法は知らない。 Guileは実際にC/C++プログラムにSchemeスクリプトを追加できるようにするための拡張言語です。

私はMIT Schemeについてよく分かりませんが、スタンドアロンの実行可能ファイルにコンパイルすることはできません。それについて私を修正してください。

これですべてのことができます。 libguileへの依存を気にしない限り、C/C++でラッパーを記述し、Schemeコードを含む文字列をlibguileで渡すことができます。 Dia hereのGuileマニュアルには、基本的な例があります。あなたのスクリプトをヘッダファイルに作成し、それをヌル終端のC文字列にラップしてください(少しの定型文とそれに続くものの後に)scm_eval_string()と評価してください。

Schemeを書き、ネイティブのバイナリを出力したい場合は、Chickenについて良いことを聞いたことがあります。

関連する問題