`
seagate
  • 浏览: 38719 次
  • 来自: ...
文章分类
社区版块
存档分类
最新评论

Windows下使用Ecl将lisp代码编译成可执行程序

阅读更多

Ecl是一个开源的Lisp语言实现,他最大的特点就是能作为嵌入式脚本语言来使用,另外还能将lisp代码编译生成原生的程序。

下面介绍如何使用Visual Studio来编译Ecl。


下载最新版本的Ecl代码,最新版本是12.2.1。点击下载

将代码解压到指定的目录下,然后打开visual studio的命令行提示界面,进入到ecl代码目录下的msvc目录中。


输入nmake,开始编译代码。

编译完成后,输入nmake install prefix=d:\ecl 将编译好的ecl项目拷贝到d:\ecl下。


进入d:\ecl,输入ecl,出现以下提示

ECL (Embeddable Common-Lisp) 12.2.1 (git:UNKNOWN)
Copyright (C) 1984 Taiichi Yuasa and Masami Hagiya
Copyright (C) 1993 Giuseppe Attardi
Copyright (C) 2000 Juan J. Garcia-Ripoll
ECL is free software, and you are welcome to redistribute it
under certain conditions; see file 'Copyright' for details.
Type :h for Help.
Top level in: #<process TOP-LEVEL>.


这样ecl就安装完成了。


接下来编辑一个hello.lisp的文件,保存到ecl目录下,测试下编译成可执行代码。

代码内容如下:

(princ "Hello world!")
(terpri)
(quit)


这就是一个lisp版本的hello world了。按照ecl官方的manual,输入

>(compile-file "hello.lisp" :system-p t)

悲剧的事情出现了,编译成c语言的步骤为nil,编译终止了。在这卡了很久,包括到处google。


最后到mail list下搜索,发现正确步骤:

> (require :cmp)

;;; Loading #P"D:/ECL/cmp.fas"
("CMP")


> (setf C::*COMPILE-IN-CONSTANTS* t)


T


再输入

> (compile-file "hello.lisp" :system-p t)

;;;
;;; Compiling hello.lisp.
;;; OPTIMIZE levels: Safety=2, Space=0, Speed=3, Debug=0
;;;
;;; End of Pass 1.hello.c

;;; Finished compiling hello.lisp.
;;;
#P"D:/ECL/hello.obj"
NIL
NIL
> (c:build-program "myecl" :lisp-files '("hello.obj"))
eB1tmp.c
   正在创建库 D:/ECL/myecl.lib 和对象 D:/ECL/myecl.exp

#P"myecl.exe"


查看ecl文件夹下,多出来一个myecl.exe,看来ecl确实不错。

他的问题是开发人员似乎很少,所以项目的文档旧而且奇缺。




分享到:
评论
3 楼 416689755 2012-08-15  
你好,楼主,怎么联系你呢?我提到的问题,能帮忙解决一下吗?谢谢!
2 楼 416689755 2012-07-31  
为什么我自己写的lisp函数,编译时能通过,但是在另一个自己写的函数中调用此函数时,就不能通过编译。不知道你们有没有试过。
例如:
(defun cc(/ Location)
   (vl-load-com)
  ;(vlax-get-or-create-object  "AutoCAD.Drawing.18")
  (setq Location
  (vl-registry-read "HKEY_LOCAL_MACHINE\\SOFTWARE\\Autodesk\\AutoCAD\\R18.0\\ACAD-8001:804" "location"))
  (startapp (strcat Location "acad.exe" "C:/Drawinga1.dwg"))
  )

(defun bb(/)
(print "444444444444")
(cc)
)

QQ:416689755   邮箱:machengjun0520@163.com随时联系我。谢谢你。
1 楼 416689755 2012-07-31  
楼主,你好。想问你ecl的问题

相关推荐

    ECL:https的镜像

    此外,ECL可以从Lisp代码生成独立的可执行文件,并且本身可以作为共享库链接到您的程序。它还具有针对C编译器不可用的情况的解释器。 ECL支持Linux,FreeBSD,NetBSD,DragonFly BSD,OpenBSD,Solaris(至少v。9)...

    PX4 的 ECL EKF 公式推导及代码解析.pdf

    PX4无人机系统是一种开源的飞行控制软件,它使用ECL(Estimation and Control Library)进行状态估计和控制,而ECL中利用EKF(扩展卡尔曼滤波器)进行传感器信息的融合。EKF是一种用于非线性动态系统的状态估计方法...

    ECL语言初级介绍

    暂停是ECL中一种重要的机制,允许程序在特定条件下暂时停止执行,直到满足某些条件后才继续。 ##### 3.9 泛型行为和模块 泛型行为是指可以在不同上下文中复用的行为模式。在ECL中,通过定义泛型模块可以实现这一...

    自定义ECL命令

    4. **集成到RCPTT**:将自定义的ECL函数集成到RCPTT测试脚本中,通过调用这些函数来执行自定义的操作。这可能涉及到导入自定义库、设置测试环境、配置参数等。 5. **测试与调试**:完成代码编写后,进行严格的测试...

    trivial-formatter:常见Lisp的代码格式化程序

    常见Lisp的代码格式化程序。 请参阅。 该文件由琐碎格式化程序本身格式化。 用法 (trivial-formatter:fmt :your-system :supersede) 有关详细信息,请参见。 行宽。 默认值取决于实现。 (虽然可能是80。)您可以...

    cordova-ecl:Cordova 嵌入式 Common Lisp 插件

    在 Cordova 的框架下,`cordova-ecl` 插件的目的是将 Common Lisp 的强大功能与移动应用开发相结合,使得开发者能够利用 Lisp 的优势来处理复杂的逻辑或者创建高性能的部分。通过这个插件,开发者可以将 Lisp 代码...

    Python库 | ecl-2.11.0rc0-cp39-cp39-macosx_10_9_x86_64.whl

    安装完成后,你就可以在Python代码中导入并使用ECL库提供的功能了。例如: ```python import ecl # 然后你可以调用ECL库提供的函数或方法 ``` **Python与Lisp的融合** Python和Lisp结合,可以带来很多有趣的编程...

    immersive:探索使用 ecl 的 Lisp repl 作为 Raspberry Pi 上的用户 shell。 使用 Quicklisp 和我在探索 Common Lisp 当前状态时发现的其他有用的东西

    身临其境概述Immersive 是对在 lisp 中实现的类 Unix 用户空间的探索。依赖关系版本 1.2.x - 用于在 repl 中进行嵌入编辑 - 用于在 repl 中获得方便的阅读体验灵感Lisp Machines 的想法确实在这次探索中发挥了作用,...

    ECL-Precompiled-Binaries:此处发布了几个适用于 Android 操作系统的预编译二进制文件(包括 ECL)

    ECL (Embeddable Common Lisp) 预编译二进制文件 为方便起见,这里发布了几个适用于 Android 操作系统的预编译 ECL(嵌入式 Common Lisp)二进制文件。 有很多问题,例如“我可以在 Android 上使用 Common Lisp 吗?...

    PyPI 官网下载 | ecl2df-0.9.1.tar.gz

    然而,由于这里提供了源代码压缩包,开发者也可以选择手动解压,然后使用`setup.py`脚本来编译和安装库,这对于那些希望深入理解库内部工作原理或者需要对库进行定制的人来说非常有用。 “ecl2df”这个名字暗示了它...

    Common Lisp An short introduction on most interesting parts(参考样板)

    形式和函数是Common Lisp中的核心概念,形式是指程序中可求值的表达式,而函数则是用来执行特定任务的代码块。 #### 程序结构与列表处理 Common Lisp中的程序结构清晰,易于理解。列表处理是Lisp的一个重要方面,...

    RapidOCR HTTP 服务 win32程序,易语言编写.zip

    如果是源代码文件夹,里面可能包含多个子文件,如易语言的源代码文件(.ecl或.epp),这些文件用于编译成可执行的win32程序。如果是主程序文件,那么它可能是已经编译好的二进制文件,用于启动和运行RapidOCR HTTP...

    ECL Readline-开源

    ECL是一种高效的Lisp实现,它允许开发者在多种环境中嵌入和使用Lisp代码,包括在C或C++项目中。ECL Readline的出现,弥补了ECL在交互式命令行输入体验上的不足,使得用户在使用ECL时可以享受到类似GNU Readline库...

    OS2200 ECL Reference Manual

    ### 执行控制语言(ECL)与文件实用程序例程(FURPUR) #### 引言 本手册《OS2200 ECL参考手册》是针对ClearPath OS2200 Release 12.1版本的一个详尽的指南,发布于2010年6月。它为所有Executive Control Language...

    值ECL基本触发器电路的设计与仿真.pdf

    在现代电子系统中,提高数据处理速度和降低功耗是两个关键指标,而ECL逻辑由于其高速特性(可达几GHz的开关频率)和较低的电源电压(约1.35V),成为了实现这些目标的有效手段。ECL电路的三值逻辑(TTL,即三种可能...

    mod_ecl-开源

    3. 配置Apache,将`mod_ecl`添加到模块列表中,并设置相关配置选项,例如Lisp代码的路径和执行权限。 4. 重启Apache服务,使改动生效。 5. 创建Lisp脚本,这些脚本可以处理HTTP请求,生成动态内容。 **优势与应用...

    易语言源码关联程序.7z

    2. 执行文件:可能是一个可执行程序,用于管理、查看或修改源代码关联。 3. 配置文件:这些文件可能包含有关如何设置源码关联的详细信息,如注册表项、快捷方式或配置选项。 4. 文档:可能包含关于如何使用关联程序...

    易语言 中文程序设计语言 PDF

    - **Windows系统**:使用命令行工具进行编译,例如`echello.ef-ecl_name="程序"-starter_cls="启动类"-out_mode=runable-out="hello.exe"`,然后通过`hello.exe`运行程序。 - **Linux系统**:同样通过命令行工具编译...

    mechanize:Common Lisp 中的自动化 Web 交互

    - **高性能**:Lisp 的即时编译器可以将代码转换为高效的机器码,提供接近静态编译语言的速度。 为了开始使用这个 Common Lisp 版本的 Mechanize,你需要首先确保你有一个合适的 Common Lisp 实现,如 SBCL(Steel ...

Global site tag (gtag.js) - Google Analytics