Fedora下编译mit-scheme
来源:www.5dlinux.com
是SICP(计算机顺序布局与表明)运用的解说言语,现在也是GNU官方维护的一个软件。可惜的是,GNU只提供Debian, Ubuntu, Mac OS X和Windows的二进制包,关于其他Linux和BSD的刊行版本只提供源码。以是,如果不是用下面支持的4种操纵琐屑,大局部状况下只能从源码编译。
本文用于经验从源码编译布置mit-scheme的读者,盼望为中国人学习scheme能提供一点帮手(提示:FreeBSD的ports目次里有mit-scheme,布置起来照旧很等闲的,不在此文评论申辩规模)。本文参考了mit-scheme源码包里README文档,结合mit-scheme20080130版本和Fedora 8的实践状况做了简化操纵,我们假定你:
1.机器是x86的平台
2.看不太懂,或许不太乐意看源码里带的自述文件
3.布置Fedora古装好了须要的开荒状况(平常这都不会有什么成绩)
4.从 http://www.gnu.org/software/mit-scheme/ 下载了最新的为Debian GNU/Linux编译的二进制包mit-scheme-20080130-ix86-gnu-linux.tar.gz,以及portable c的通用源码包mit-scheme-c-20080130.tar.gz
5.这2个包被解压到/tmp,组成了目次树:/tmp/{bin,lib,mit-scheme-c-20080130}。这不是必须的,只是为了叙说的利便。如果你不知道怎样作,只须要进入寄存着下载源码包的目次,分别实行:
tar zxvf mit-scheme-c-20080130.tar.gz -C /tmp
tar zxvf mit-scheme-20080130-ix86-gnu-linux.tar.gz -C /tmp
首先,要处理一个鸡和蛋的成绩:要从源码编译mit-scheme,你必须已经有了一个能义务的mit-scheme。
是不是像在开玩笑?编译的脚本须要挪用scheme,而你编译这个scheme恰是为了有一个能用的scheme...
下面我们来处理这个成绩:
进入到源码的目次的/tmp/mit-scheme-c-20080130/src/microcode下面,分别实行
# ./configure
# make
这样,我们就产生了一个和自身平台相关的scheme实行文件。现在我们用其改换为Debian GNU/Linux编译的二进制包里的实行文件:在今朝这个刊行版本,你或许会发明解压后/tmp/bin/ 下面有多个实行文件,mit-scheme-native是真正的文件,而其他几个都是mit-scheme-native的符号链接(这或许是为了保证向前兼容);
实行
# cp -f /tmp/mit-scheme-c-20080130/src/microcode/scheme /tmp/bin/mit-scheme-native 即可改换。
接上去设置好这个scheme的运转状况:
# export MITSCHEME_LIBRARY_PATH="/tmp/lib/mit-scheme"
# export PATH="$PATH:/tmp/bin/"
现在,如果你在终端键入scheme -no-init-file ,应该会看到sheme表冥具起来了。在 => 提示符后键入(exit)加入。
如果以上步调没蜕化,现在你便有了一个可以编译mit-scheme的状况。进入/tmp/mit-scheme-c-20080130/src 源码目次,确保变量MITSCHEME_LIBRARY_PATH为/tmp/lib/mit-scheme,PATH中有/tmp/bin/。
接上去,按顺序实行
# ./Setup.sh
# ./configure
# make #这一步须要时间稍长
# make install #须要root身份
进入 /tmp/mit-scheme-c-20080130/doc ,实行./configure, make, make install(须要ROOT身份) 布置文档。
如果你喜欢用emacs挪用mit-scheme,可以进入 /tmp/mit-scheme-c-20080130/etc/,把xscheme.el拷贝到emacs的加载路子
# cp -fp xscheme.el /usr/share/emacs/site-lisp/
现在,在emacs里M-x,键入load-library,回车后再键入xscheme,emacs应该就可以加载成功了。要运转scheme的表冥具,此时M-x,键入run-scheme即可。
版权声明:
原创作品,准许转载,转载时请务必以超链接要领标明文章 原始来由 、作者信息和本声明。否则将究查司法责任。