2012-03-19 50 views
5

我正在尝试在动态链接的球拍中创建一个可执行文件。目前我的hello world程序编译为4MB可执行文件。那就是:如何在Racket中创建动态链接的可执行文件?

#!/usr/bin/env racket 
#lang racket 

(define (extract str) 
    (substring str 4 7)) 

(print (extract "the cat out of the bag")) 

我使用

拉科EXE first.rkt

而生成的可执行文件是4+ MB编译它。显然,它是静态链接球拍库。

- 编辑---

这里是启动代码:

#lang racket 

(require launcher/launcher) 
(require racket/runtime-path) 

(define-runtime-path prog-path "first.rkt") 

(make-racket-launcher (list (path->string prog-path)) 
         "first" 
         '()) 

它只需要放在一个单独的文件,并执行

racket <launch-file>.rkt 

回答

7

raco exe输出是指静态包括其所需的模块,所以它可能不是你想要的。你看过launcher库吗?它会创建一个exe文件,只包含绝对最低限度的启动程序在本地安装。

或者,选择一种较小的语言,如#lang racket/base,由于它不链接到尽可能多的模块,应该生成较小的可执行文件。

最后,如果你在一个基于Unix的系统上,如果它的可执行位(x)已被设置,程序应该已经作为一个可执行文件,因为你已经在顶部添加了#!/usr/bin/env球拍线。这假定你的球拍处于PATH状态。请参阅http://docs.racket-lang.org/guide/scripts.html

+0

谢谢。有效!! :) – Salil 2012-03-19 22:14:09

相关问题