可执行文件大小能优化吗?

5
我已经在Racket中创建了以下代码的可执行文件(选择Racket而不是GRacket):
#lang racket
(print "Hello World!")

它创建了一个大小为3.6 mb的tgz文件,并带有一个6.2 mb的可执行文件。这对于这个简单的程序来说似乎很大。由Chicken Scheme创建并使用相同代码(print "Hello World!")的可执行文件只有16984字节(16.6 kb)。

我认为我在使用Racket创建可执行文件时缺少某些优化设置,应该如何使这个可执行文件更小?

1个回答

8
文档建议使用尽可能小的基础语言,来翻译raco exe。在这种情况下,将#lang racket替换为#lang racket/base。在我的机器上(Linux,Racket 6.8),这将可执行文件大小从6.6M减少到988K。
我能够通过先运行解模块化器来进一步减小可执行文件的大小。我将程序保存为hello.rkt并运行
$ raco demod hello.rkt
$ raco exe -o hello hello_rkt_merged.zo

这将产生一个大小为277K的可执行文件。


这个解决方案以前可以用,但在更新的Racket 7.0上不再适用。 - logc
@logc 谢谢,我已经在这里创建了一个错误报告:https://github.com/racket/racket/issues/2226 - Ryan Culpepper
今天我试着在MacOS(Sonoma 14.1.1)上使用DrRacket 8.11[cs]构建它,结果大小为48 MB。我注意到'racket'可执行文件本身的大小大约也是相同的(不确定是否有关系,只是觉得有点可疑)。 - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接