可执行文件的大小可以优化吗?

Can executable size be optimized?

我已经在 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 中创建可执行文件时遗漏了一些东西(可能是一些优化设置)。如何让这个可执行文件变小?

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 的可执行文件。