iovxw

打包发布 Chez Scheme 程序

简单暴力

上一篇文章 里说过如何将 Chez Scheme 程序编译为单文件, 不过仍然需要 Chez Scheme 或者是 Petite Chez Scheme 才能运行

但是总不能要求用户都安装 Chez Scheme, 因为这货在各大发行版官方仓库里都没有 (AUR 不是官方仓库), 只能自己编译, 更别说 Windows 了 (好好好, 我知道 Windows 10 发布了一个很重要的特性, 但那现在还是预览版)

解决方法很简单也很暴力, 发布的时候把 Chez Scheme 打包进去


Chez Scheme 依赖两个文件,petite.bootscheme.boot, 如果用的是 Petite Chez Scheme 就只依赖 petite.boot

说到这, .boot 文件到底是什么呢? 请看 Section 9.15. Fasl Output

对于 Chez Scheme, 这两个文件的搜索路径是 ~/lib/csv%v/%m /usr/lib/csv%v/%m /usr/local/lib/csv%v/%m

具体的路径得看你安装在哪

如果 make 的时候没有指定, 那就在 /usr/lib/csv%v/%m

%v%m 分别代表了 Chez Scheme 的版本和安装的 machine-type

获取版本用 scheme --version, 而获取 machine-type, 可以直接调用 (machine-type)

比如我这里就是 /usr/lib/csv9.4/ta6le/petite.boot/usr/lib/csv9.4/ta6le/scheme.boot

可以通过 --boot-b 参数来加载这俩文件


然后把这几个 .boot 文件和 scheme 程序再加个启动脚本打包分发就行了

启动脚本很简单

#!/bin/bash
./scheme -b ./petite.boot -b ./scheme.boot --program ./main.boot

类似这样的, 只需要根据实际情况改一下文件名, main.boot 是编译出来的主程序

如果考虑到动态链接库问题, 就把 Chez Scheme 静态编译, 或者把静态链接库也打包进去