永发信息网

怎么能将Lisp代码编译成EXE文件??

答案:3  悬赏:20  手机版
解决时间 2021-01-10 14:40
  • 提问者网友:情歌越听越心酸
  • 2021-01-10 10:26
怎么能将Lisp代码编译成EXE文件??
最佳答案
  • 五星知识达人网友:慢性怪人
  • 2021-01-10 11:52
为什么要编译成exe文件呢?要让其在所有的windows上都能运行?
【首先】:lisp是脚本语言,所以它是跨平台的,也就是说它不需要被编译成exe文件,就能在所以机器上运行。
【方法】这方法有点笨,但是很好,也适用于想把java转exe苦苦挣扎的人们
方法就是:写一个bat文件
【bat文件的内容】文件名暂定为run.bat
.\clispfolder\clisp programname
PAUSE
【注】
(1)一定要用反斜杠
(2)clispfolder 为你的lisp的解释器的文件夹的名字
(3)clisp 为你的解释器的名字(就是clispfolder中那个exe文件)
(4)programname为你的lisp程序的名字,貌似带不带后缀都可以。
(5)用记事本写完上面两行东东后,将其存为.bat格式
【然后的操作】
随便建一个文件夹,这个文件夹中要放进去三个东东
(1)你的lisp的源代码
(2)你的lisp的完整的解释器,就是讲clispfolder完整的拷贝到这个文件夹即可
(3)刚才写的那个bat文件
【之后】
你就可以带着这个文件夹满世界跑啦,在“所有”的windows中,双击那个bat文件,即可运行你写的lisp啦..................................
【此方法的缺点】
(1)那个clispfolder太大,如果你只是写一个不到1M的lisp的话,那这种方法很臃肿
(2)这种方法貌似不适用于用lisp写windows的@病#毒!
----------------------------------------------------------------
不过这个方法可靠,简单!追问大哥,我要lsp代码的编译器,能在windows系统下,编译成EXE文件,能直接执行的.exe文件。不过还是谢谢你的回答。追答貌似世界上没有你要的这个所谓的能把lisp编译成exe的编译器,真的。追问你可以下载CLISP试一下,但是我编译后的EXE文件执行总出错(如图:


希望有高手能帮帮忙啊
追答嗯?我有CLISP啊,但它貌似不能把lisp源码编译成exe的啊,它貌似只是一个lisp 的interpret,你的f.exe是怎么弄出来的,咱们互相学习一下,我也很想知道这个CLISP这么强大吗,现在都可以将lisp编译成exe啦,我们可以用email,我的邮箱:lzninchina (at) sina com
全部回答
  • 1楼网友:持酒劝斜阳
  • 2021-01-10 13:38
编译lisp源代码的时候要写一段说明放在源代码后面让编译器知道想要做什么。
  源代码,目的是使用 f 12 23 22这样的命令求出12 23 22这三个数字的阶乘。
===============================
(defun main (&rest args)
(defun factorial (n)
(if (= n 0)
1
(* n (factorial (- n 1))) ) )
(loop for i in *args* do (print (factorial (parse-integer i))))
(quit))
(EXT:SAVEINITMEM "f"
:QUIET t
:INIT-FUNCTION 'main
:EXECUTABLE t
:NORC t)
===============================
保存在文件a.txt里面,然后运行命令
$ clisp a.txt
就编译好了。这里面有个小幽默。一开始把“EXT”那一段放在了main函数前面,经过在lisp环境调试,发现如果把这个文件load两遍就能够编译出正确结果,load一遍就不行,load三遍四遍啥的都没问题。我感觉到超级奇怪。过了很久才明白过来。
这样编译出来的是巨大的可执行文件,在文件里lisp把自己也放进去了。
  如果要编译纯粹的lisp目标代码,执行起来就没这么痛快了,但是文件会小很多。
  那个时候删掉(EXT)那一段,用命令
$ clisp -c a.txt
即可。
  • 2楼网友:刀戟声无边
  • 2021-01-10 12:23
在交互环境下:
用(compile-file "filename")编译
用(load “filename”)加载。
此编译成lib文件。
在命令行中:
Invoked with -c, compiles the specified lisp files to a platform-independent bytecode which can be executed more efficiently.
实际上目前不能编译成exe。它的编译所提供的只是中间字节码fas文件。
你希望程序独立的话不能使用clisp 应该使用:
Ecl:Ecl是一个开源的Lisp语言实现,可以把lisp文件编译成独立程序
baidu 搜索 “ECL - a Common-Lisp implementation ” 第一个便是主页。
参考这个文章:《Windows下使用Ecl将lisp代码编译成可执行程序》
-----
手册上说
COMPILE-FILE 函数能输出C文件,需要lisp源码使用FFI特性。
(compile-file "ss.lisp" :output #P"c:main.c")
但是我没成功。你再看看手册吧。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯