【问题标题】:Error running scmutils by M-x mechanics in emacs在 emacs 中通过 M-x 机制运行 scmutils 时出错
【发布时间】:2014-09-21 06:09:57
【问题描述】:

我已经从/usr/local 下的 tar 球安装了scmutils(用于书籍SICM)。

然后我把它放在我的.emacs:

(defun mechanics ()
  (interactive)
  (run-scheme
    "/usr/local/scmutils/mit-scheme/bin/scheme --library /usr/local/scmutils/mit-scheme/lib"
  ))

主要是来自http://redsymbol.net/articles/using-gnu-emacs-with-scmutils/的指令。

但我得到一个错误:

/usr/local/scmutils/mit-scheme/bin/scheme: 1: /usr/local/scmutils/mit-scheme/bin/scheme: 
Syntax error: "(" unexpected

Process scheme exited abnormally with code 2

我也试过运行/usr/local/bin/mechanics,这是一个最终运行的shell脚本:

$ /usr/local/scmutils/mit-scheme/bin$ /usr/local/scmutils/mit-scheme/bin/scheme --library /usr/local/scmutils/mit-scheme/lib --heap 12000 --band edwin-mechanics.com --edit

$ bash: /usr/local/scmutils/mit-scheme/bin/scheme: cannot execute binary file

我认为有些不兼容。这是“文件 mit-scheme-x86-64”:

mit-scheme-x86-64: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.18, BuildID[sha1]=0x88f52caf274bb8298a0f6b84fc34beb9d2094bc6, not stripped

$ uname -r 

3.11.0-26-generic

现在有人可以指导我如何调试吗?我在 VMWare Fusion (Mac OS X) 中运行 Ubuntu。

【问题讨论】:

  • 这是给 SICM 的书吗?
  • 是的,多年后我正在重读这本书。
  • 我已经让该代码在 Arch Linux 上完美运行,包括在 scmutils 的 emacs shell 版本中获取 show-expression 以弹出 xdvi 窗口以显示乳胶表达式。它也应该在 ubuntu 上运行;除了你所拥有的,我不需要做任何特别的事情。我会仔细检查那里的defun(也使用C-k以块形式在此处发布代码。机械脚本打开了一个带有Edwin的xterm窗口,它是emacs的显着缩减版本,缺乏许多功能。我会非常建议在这里使用 emacs 而不是 Edwin。
  • 更新:emacs 中的图形 xdvi 显示表达式也适用于 macos。您只需要手动设置 emacs 中的 PATH 变量以包含 xdvi 所在的目录。请参阅下面的我的其他评论。

标签: ubuntu emacs scheme vmware-fusion sicm


【解决方案1】:

问题正文的直接答案可能是 VMWare 无法识别二进制文件。

关于如何从 Emacs 运行 scmutils 的更一般的问题,以下是 Debian 和 macOS 的步骤:

Debian:

首先确保您有 MIT 方案。如果没有,请执行sudo apt install mit-scheme。然后,从the official scmutils page 下载压缩包。提取它和sudo ./install.sh。另外,sudo cp mechanics.sh /usr/local/bin/mechanics,现在您可以通过执行mechanics(在终端中运行)或mechanics -edit(弹出 Edwin)从 bash 运行 scmutils。如果您还没有,您还需要sudo apt install texlive。然后,通过mechanics -edit打开Edwin确认show-expression工作(如果字体太小,请参阅my answer to another question),然后(show-expression '(sqrt (+ x y))),然后M-z,它会弹出一个带有Latex的窗口。

太好了,show-expression 在 Edwin 上工作!让它在 emacs 上工作很容易。首先,打开emacs,评估(require 'xscheme)(这似乎改变了run-scheme命令的含义),然后执行(run-scheme "/usr/local/bin/mechanics"),你会在你的emacs中看到一个scmutils REPL。此时,评估 (up 1 2 3) 应该可以工作,但请注意,与 Edwin 不同,您需要 C-x C-e 来评估'M-z 不会在这里工作。最后,eval (show-expression '(sqrt (+ x y))),它会工作。

ma​​cOS

这些指令取自该线程中的 cmets;我在一年前写了它们,不再使用 macOS,所以现在无法确认它们,但它们应该可以工作。

安装 Xquartz 和 "emacs for macOS" 以及 BasicTex。然后使用 brew,安装 mit-scheme 和 gv。最后,像上面的 Debian 部分一样从 tarball 安装 scmutils。确认 show-expression 在 Edwin 中工作,然后在 emacs 中,从 Debian 部分重复上述步骤,并确保使用 setenv/Library/TeX/texbin 添加到 PATH。然后,show-expression 应该可以在 emacs 中使用。

(再说一次,我现在没有要确认的 macbook,但大约一年前,当我在此页面中编写其他 cmets 时,我使用了与上述类似(如果不完全相同)的说明,就让它工作了)。

【讨论】:

    【解决方案2】:

    我认为问题可能出在 VMWare Fusion 上。我在 Mac OS X 和本机 ubuntu 上成功运行了它。

    【讨论】:

    • 我在 Mac OS X 和 Arch linux 上成功运行了它。但是在 Mac OS X 上,我不能做(show-expression '(+ x y)),它应该会弹出一个 xdvi 窗口。这可能是由于 emacs 的 gui 版本中的一个错误,未设置显示 xterm 窗口所需的环境变量。但是对于 Arch linux,一切都运行良好,即使在 GUI 版本的 emacs 中也是如此。
    • 更新:我设法让图形 xdvi show-expression 在 Mac OS 上也能正常工作。我所做的是安装 xquartz,然后是 basictex,然后是 brew install gv。然后,在 emacs 中,必须使用 setenv 将“/Library/TeX/texbin”添加到 PATH。然后,emacs 机制知道在执行 show-expression 时使用 xdvi
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-09-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-15
    • 2015-05-25
    相关资源
    最近更新 更多