1.已安装的:emacs(已安装slime)(不安装emacs,slime的话也不是不能做,那样的话,下面有个地方说明了该怎么做)

  2.cl-web-crawler 下载地址:https://code.google.com/archive/p/cl-web-crawler/    或者在github上也有这个的backup。

  3.clozure 下载地址:
  https://github.com/Clozure/ccl/releases/
  (找到那个ccl-1.12.1-windowsx86下载下来就好)
  下载到的ccl-1.12.1-windowsx86.zip中wx86cl64.exe是64位的,wx86cl.exe是32位的。其他的文件基本上都是源文件,如果你相对源码进行改动,或重新编译clozure cl的kernel的话,你会用到这些。从源码编译请参考:              https://ccl.clozure.com/manual/chapter3.html#building-ccl-from-source

 ****************************************************************************************************************

  在这里顺便提一下大致上如何编译源码成为64位程序。不用的话可以跳过这一段。在/ccl-1.12.1-windowsx86/lisp-kernel/win64/中(/ccl-1.12.1-windowsx86/lisp-kernel/win32/是要编译成32位程序的),这里的Makefile中有说明:# This makefile is written to be used with the mingw toolchain# running in the Cygwin environment or Msys2 environment.

  就是说,需要运行在Cygwin环境或Mysy2环境中的mingw工具链。因为我没听说过Msy2,故选择的Cygwin。关于安装Cygwin,
  具体可以参考其他教程,值得提一句的是,安装程序的时候,有选择从哪里下载文件安装包的下载地址列表,里面建议选择aliyun的。
  当你进入到cygwin的这个页面时:

 


将View中的下拉框选择Full,search框里要输入你要安装的工具。因为在/ccl-1.12.1-windowsx86/lisp-kernel/win64/Makefile中,已经说明:
# If running in the Cygwin environment:
# Install the following Cygwin packages:
# * make
# * m4
# * mingw64-i686-binutils
# * mingw64-i686-gcc-core
# * mingw64-i686-headers
# * mingw64-i686-pthreads
# * mingw64-i686-runtime
这几个都要装,所以你首先在那个search框里,输入make,不用按enter键就会出现查找结果,之后在New那一列里点下三角选择版本(后面那个方框应该是下源码的吧),把这6个都选上之后下一步安装就行了。(安装程序不要删,建议保存,在这下面还有用)
之后启动cygwin,这是个命令行应用程序。
在安装完毕工具之后,将/ccl-1.12.1-windowsx86这个文件夹复制到cygwin里的/usr/local/src中(没有src文件夹就新建它);

  然后在cygwin的命令行界面里,切换目录/usr/local/src/ccl-1.12.1-windowsx86/lisp-kernel/win64/,在这里直接输入命令make,就会编译出wx86cl64.exe,这个新的文件在/usr/local/src/ccl-1.12.1-windowsx86/里。

  这样这个kernel就编译好了(虽然我64位的编译出错了,而且还不知道为啥。。。),但这还不行,根据官网的说明,还要有个与之相对应的image文件,wx86cl64.exe对应的就是wx86cl64.image,要编译出这个文件,要先,再次启动之前的cygwin安装程序,再安装个工具subversion(跟上面的那6个步骤相同)。

  之后在/usr/local/src/ccl-1.12.1-windowsx86/scripts/中,运行get-binaries这个脚本文件,这个文件有参数:
Usage: $0 linuxx86|darwinx86|freebsdx86|solarisx86|windows|linuxarm ,

  既然是windows,就"get-binaries windows"就行。

  等脚本运行完毕后,/usr/local/src/ccl-1.12.1-windowsx86/下就会出现wx86cl.image和wx86cl64.image,两个应该是对应32位与64位的exe程序。
  到这里应该就结束了吧吧吧。。。(我也不太确定,64位的wx86cl64.exe我编译过程中出了错,提示的好像是什么“ld 什么 section below”什么的,但我32位的编译成功了,也能用;;另外根据官网的说法,似乎,wx86cl.exe相当于一个内核,对应的wx86cl.image是一个动态加载的库文件,启动wx86cl.exe后,wx86cl.exe将wx86cl.image加载入内存,wx86cl.exe是要使用wx86cl.image的。这两个文件都不能缺少。有这方面需求的还是看官网吧,不过官网是英文的,关于clozure cl编译的内容国内网站上也没找到啥,所以英文看得难受。。。希望国内的资料多点吧)

 

===========================================接上面编译源码为应用程序后=========================================

  有了wx86cl64.image和wx86cl64.exe两个文件后,在emacs(不安装emacs和slime的话看这一大段的后面)的init.el(总之在emacs的启动配置文件里)中,加上这条表达式:(setq inferior-lisp-program "[在哪个盘里就填哪个]:/[path]/wx86cl64.exe"),里面的[path]换成wx86cl64.exe的路径,这条语句就会设置与slime搭配的common lisp解释器。
  之后M-x slime,就会启动ccl。
  如果没有安装emacs和slime,就直接运行wx86cl64.exe这个应用程序,下面的部分中,每当我提到在emacs的slime中输入时,就在这个应用程序弹出的命令行界面(不出意外的话,命令提示符是个"?")输入就好。

 

========================安装quicklisp============================

  下面安装quicklisp(这个国内网上有教程,我大概说下,另外补充些):
  下载地址:https://beta.quicklisp.org/quicklisp.lisp
  之后在emacs的slime(就是那个CL-USER>后面)中输入(load "[quicklisp.lisp的路径,比如d:/apple/banana/melon/quicklisp.lisp]"),注意这里的路径中用"/"就好,"\"的话应该会出错。刚才的语句加载了quicklisp.lisp文件;
  然后首次安装初始化:输入并执行(quicklisp-quickstart:install :path "[你想要将quicklisp安装到的位置]"),或者(quicklisp-quickstart:install)。后面的这条语句会自动将quicklisp安装到%HOMEPATH%下(你可以在cmd中执行: echo %HOMEPATH% 查看安装到哪里)。

  另外补充: To load Quicklisp every time you start Lisp, use: (ql:add-to-init-file),这句话就是说为了不用每次启动lisp的时候都加载quicklisp,可以执行(ql:add-to-init-file),看执行这个表达式的输出,这个表达式会生成个文件里面有每次自动加载相关文件的表达式,可能会在%HOMEPATH%下生成这个文件。

===========================配置asdf=====================

  下面配置asdf,参考资料:https://common-lisp.net/project/asdf/asdf.html#Configuring-ASDF-to-find-your-systems
  在emacs的slime(还是那个CL-USER>后面),输入 (require 'asdf) ,就会加载asdf。可以输入(asdf:asdf-version)来查看asdf的版本。
  然后配置asdf找文件的路径,(这里要事先下好cl-web-crawler这个文件包,不出意外这个文件包的名字叫cl-web-crawler_0.02,里面有个cl-web-crawler.asd的文件,要做的就是让asdf能够发现这个文件。

在windows下,如果你没有什么强迫症的话,对把文件安装到C盘什么的(因为%LOCALAPPDATA%这个目录一般都在系统盘)没有什么排斥感的话,可以跳过这部分了,否则想更改安装目录的话:

  在%LOCALAPPDATA%中,递归创建文件夹:/.config/common-lisp/source-registry.conf.d/(就是最终形成%LOCALAPPDATA%/config/common-lisp/source-registry.conf.d/这个目录,在这个目录下,创建个文件apple.conf(这个不管名字什么都行,melon.conf, bean.conf,...都行,只要文件后缀是conf都行的),用记事本什么的编辑这个文件,在里面加上个表达式:(:tree "[这里是/cl-web-crawler_0.02这个文件夹所在的路径,例如D:/apple/applications/LispAsdfPackages/]")

 

============================安装两个依赖包=======================

  然后用quicklisp安装两个cl-web-crawler依赖的包
  还是在那个emacs的slime(还是那个CL-USER>),输入
  1.(ql:system-apropos "drakma") ;;查找“drakma”的包
  2.(ql:quickload "drakma") ;;下载“drakma”的包
  ;;上面的第二步在我这里出了错,提示有个文件找不到什么的,我跳过了
  ;;至于后果怎么样,
  ;;现在实在不知道
  3.(ql:quickload "cl-html-parse") ;;下载cl-html-parse这个包

 

================================最后====================================

  最后还是在那个emacs的slime(还是那个CL-USER>),
  输入(asdf:load-system "cl-web-crawler") ,不出错的话应该就没事了
  看别人说,quicklisp像apt-get,asdf像make,还确实挺像的

 

 

 

posted on 2021-11-08 18:32  NJyO  阅读(420)  评论(0编辑  收藏  举报