

common lispで以下のようなソースをコンパイルした時にできる実行ファイルのサイズがかなり大きいのですが、小さくすることは可能でしょうか。

[code]

    (defun main()
        (format t "Hello World!~%"))
    
    (sb-ext:save-lisp-and-die "hello-sbcl"
        :toplevel #'main
        :executable t)
    
[/code]

以下はコンパイルのコマンドとコンパイルで作成された実行ファイルのサイズです。

[code]

    $sbcl --noinform --no-sysinit --no-userinit --load exec-sbcl.lisp
    $ls -l
         157  2 25 07:39 exec-sbcl.lisp  ; ソース
    44924976  2 25 07:39 hello-sbcl      ; 実行体
    
[/code]

"save-lisp-and-die"に"compression t"のオプションを追加しても10MBほどの大きさとなっています。  
調べてみても「標準ライブラリが大きいため実行ファイルのサイズも大きくなってしまう」というようなことはわかったのですが、どう対処すればいいかはわかりませんでした。

なお、clozure clで試しても実行ファイルのサイズはあまり変わりませんでした。

common lispで実行ファイルのサイズを小さくすることは可能なのでしょうか。


CC BY-SA 3.0
2016-02-24T22:53:08.317
22493
2017-06-23T03:04:47.990
2016-02-25T02:28:30.500
14539
question
common-lisp sbcl
common lispの実行ファイルについて


英語ですが参考になるやり取りがありました。  
<https://stackoverflow.com/questions/11036070/lisp-binary-size>

<https://stackoverflow.com/questions/913671/are-there-lisp-native-code-
compilers>

  * 商用の処理系(LispWorks, Allegro CL)を使用する
  * SBCL の場合はコンパイルイメージを圧縮、実行時に伸長することでイメージサイズを小さくできる
  * コメントにあるように ECL で C言語にコンパイル、Cコンパイラで実行形式を作成する  


CC BY-SA 3.0
2017-05-17T07:38:37.720
34775
2017-05-17T07:38:37.720
2017-05-23T12:38:56.083
-1
22888
22493
answer