如何从源代码安装 sml/nj?

问题描述

我可以成功安装 sml/nj,正如文档所说:http://smlnj.org/dist/working/110.99/install.html

但是如何从源代码安装,doc说的让我下载config.tgz,而不是脚本install.sh可以从网络下载和编译其他文件

但是如果我想编辑源代码并测试结果,这种方式似乎行不通

例如:我编辑了compile.sml文件,想看看结果,所以我需要重新编译编译器,但是install.sh会从网上下载compiler.tgz,而不是我修改文件

从源代码安装 sml/nj 很热吗?谢谢!

解决方法

smlnj.org 没有 SSL 证书,release-note README links 已损坏,GitHub repo 没有顶级自述文件。在他们的网站上滚动一下,有一个安装手册的链接:

Installing SML/NJ on UNIX

它提到了您可能尝试运行的 install.sh。运行它似乎克服了许多与弄清楚源代码如何绑定在一起相关的复杂性。不幸的是,它在我的机器上失败了;不知道是不是因为我运行的是 MacOS 并且 cc 默认为 clang 还是什么。

install.sh 会从 Internet 下载 compiler.tgz,而不是我更改的文件

我没有体验到重新运行 config/install.sh 会重新下载源代码,但我也没有体验到此命令会成功。如果您注意到,有一个名为 config/srcarchiveurl 的文件包含变量 SRCARCHIVEURL。当你 grep 左右时,它发生在 config/download.sh 和 config/unpack 中——后者,unpack,是一个在整个 install.sh 中使用的实用程序,以确保给定的子目录存在。应该检查文件是否已在 lines 205--209 上下载。

每次我想从头开始安装 SML/NJ 时,我基本上都放弃并使用 Poly/MLMoscow MLMLKitMLton,仅仅是因为它们不需要那么多安装。 SML/NJ 的分发方式不是现代软件。 Poly/ML 和 Moscow ML 有点简约(它们不支持 MLB),但更容易修改; MLton 没有 REPL,但可以通过其他方式进行安装。