20

当我进入终端(我安装了 smlnj)并输入sml时,它给了我错误sml: unable to determine architecture/operating system。这是什么意思???我在这个网站上安装了这样的 sml ,但我不确定 - 说明有误吗?
在此处输入图像描述

4

6 回答 6

24

最近的 OS X 二进制安装程序的问题仍然存在,只是焦点转移到了 OS X 的 10.9 Mavericks 和 10.10 Yosemite 版本。尽管在最近的源代码版本中解决了根本原因。

这就是为什么从现在开始解决这个问题只是拥有一个新编译的二进制包。为此,您可能最好通过homebrew. 您可以使用以下命令执行此操作:

brew update
brew cask install smlnj

截至 2021 年,使用 cask 安装的命令是

brew install --cask smlnj

这将为您编译包,这样您就可以省去检查源代码并自己进行编译的麻烦。

只是为了清理您的系统并避免重复,您只需执行以下操作即可删除以前的安装:

sudo rm -rf /usr/local/smlnj*

对于星号:我有一个包含 110.76 的裸 smlnj 文件夹和一个 smlnj-110.75 文件夹,我想我之前曾尝试安装两个不同的版本...

您可能需要删除您自己创建的任何指向旧 smlnj 文件夹的软链接,这些软链接直接位于上一步中删除的 /usr/local/ 下。

于 2014-10-03T13:32:00.823 回答
17

如果您使用的是 OSX 10.8 或更高版本(uname -r为您提供从 12 或更高版本开始的东西),如果没有一些额外的调整,SML/NJ pre 110.75 就不能很好地工作。这是一个已知问题,可以通过将 10.8 选项(参见12下面的行)添加到操作系统检测代码中来解决.arch-n-opsys

    :
    10*) OPSYS=darwin; HEAP_OPSYS=darwin ;; # MacOS X 10.6
    11*) OPSYS=darwin; HEAP_OPSYS=darwin ;; # MacOS X 10.7
    12*) OPSYS=darwin; HEAP_OPSYS=darwin ;; # MacOS X 10.8
    13*) OPSYS=darwin; HEAP_OPSYS=darwin ;; # MacOS X 10.9 Mavericks
    14*) OPSYS=darwin; HEAP_OPSYS=darwin ;; # MacOS X 10.10 Yosemite
    15*) OPSYS=darwin; HEAP_OPSYS=darwin ;; # MacOS X 10.11 El Capitan
    16*) OPSYS=darwin; HEAP_OPSYS=darwin ;; # MacOS X 10.12 Sierra
    17*) OPSYS=darwin; HEAP_OPSYS=darwin ;; # MacOS X 10.13 High Sierra

    *)   exit 1;;
esac;;
于 2013-01-19T04:08:46.313 回答
5

作为对 paxdiablo 答案的更新,如果您正在运行 macOS Sierra(版本 10.12),则需要输入以下行以使 sml 运行:

16*) OPSYS=darwin;  HEAP_OPSYS=darwin ;; # macOS 10.12 Sierra

因此,如果有更多上下文,它将如下所示:

      11*) OPSYS=darwin;  HEAP_OPSYS=darwin ;; # MacOS X 10.7 Lion
      12*) OPSYS=darwin;  HEAP_OPSYS=darwin ;; # MacOS X 10.8 Mountain Lion
      13*) OPSYS=darwin;  HEAP_OPSYS=darwin ;; # MacOS X 10.9 Mavericks
      14*) OPSYS=darwin;  HEAP_OPSYS=darwin ;; # MacOS X 10.10 Yosemite
      15*) OPSYS=darwin;  HEAP_OPSYS=darwin ;; # MacOS X 10.11 El Capitan
      16*) OPSYS=darwin;  HEAP_OPSYS=darwin ;; # macOS 10.12 Sierra
      17*) OPSYS=darwin;  HEAP_OPSYS=darwin ;; # macOS 10.13 High Sierra
      *) exit 1;;
    esac;;

SML/NJ 版本 110.79 配置了 OS X 到 El Capitan,但 Sierra 仍然缺失。

于 2016-11-23T21:05:16.067 回答
1

塞拉利昂 10.12.6

通过 Homebrew 安装 SMLbrew install smlnj

编辑您的.bash_profile并添加export PATH=/usr/local/Cellar/smlnj/110.81/bin:$PATH到文件末尾。

之后source ~/.bash_profile应用新路径,以便您的系统添加新位置,然后在您键入时知道在哪里可以找到所需的文件sml

于 2017-10-12T22:50:36.720 回答
1

升级我的 Macbook 后,我为此苦苦挣扎了好几个小时。以前我在 Macbook Air 上使用 OSX 10.8 Maverick,分发版https://www.smlnj.org/dist/working/current/index.html#macos-installer实际上运行良好。

升级到运行 OSX 10.14 Mojave 的 Macbook Prosml后,在安装并添加到 PATH 后运行会给我 OP 的错误消息。

在努力找到一些解决方案(包括此处标记为接受的解决方案)之后,最终起作用的是brew cask install smlnj.

于 2019-08-25T17:52:11.500 回答
0

我不小心安装了旧版本的 SML/NJ 后遇到了这个问题。我删除了我之前的安装,/usr/local/smlnj并使用OS X for SML/NJ 110.78 的预构建系统重新安装。最新下载可在此处下载 ,这是未来寻求者应该咨询的内容,因为我的解决方案的细节在他们出现时可能已经过时了。

于 2015-02-24T15:51:00.833 回答