星期三, 十二月 29, 2010

ECL 10.4.1 在window 用 mingw 3.4.5 编译

ECL 10.4.1 compile under mingw for window.

first download gc 7.2
http://www.hpl.hp.com/personal/Hans_Boehm/gc/gc_source/gc-7.2alpha4.tar.gz
展开。
然后进入msys
cd d:/gc-7.2alpha4
敲入命令:
1.首先配置
./configure --enable-shared=no --enable-static=yes --enable-cplusplus --enable-large-config --enable-parallel-mark --enable-threads=win32;make
2.开始编译
 make
3.安装到/usr/local目录下,实际的msys local目录下

success then.

cd d:/ecl-10.4.1
//./configure --prefix=/usr/local  --enable-boehm=system --enable-longdouble --enable-gengc --enable-precisegc --enable-threads --enable-unicode  CPPFLAGS=-ID:\\gc-7.2alpha4\\include LDFLAGS=-LD:\\gc-7.2alpha4\\.libs
make clean;./configure --prefix=/usr/local --enable-threads -enable-boehm  --enable-unicode ;make

MSVC:
nmake ECL_UNICODE=1 ECL_DEBUG=0

#include <ecl/ecl.h>
# include <unistd.h>
# include <pthread.h>
int main(int argc, char **argv)  {
  cl_boot(argc, argv);
  cl_object obj=c_string_to_object("\"
Hello world\"");
  cl_pprint(1,obj);
  cl_shutdown();
}
(ext::stream-external-format-
set *standard-input* :utf-8)
(ext::stream-external-format-
set *standard-output* :utf-8)

--build=pentium4-pc-mingw32
如何使用ecl.dll
使用
ecl-config --cflagsecl-config --ldflags 得到你需要传递给你的编译器的变量

发布使用ecl.dll的程序。
必须包含ecl.dll 和ucd.dat 两个文件同执行文件在同一个目录下

ucd.dat
显示汉字:

 cl_object obj=c_string_to_object("\"
Hello world你好\"");
   wxMessageBox(wxString(ecl_
base_string_pointer_safe(obj),wxConvUTF8));

ECL生成独立的可执行文件.
1.新建hello.lisp文件,包含如下代码
  (princ "Hello world!")
 (terpri)
 (quit)
2.生成object文件
(compile-file "hello.lisp" :system-p t) 
3.link成可执行文件
 (c:build-program "hello" :lisp-files '("hello.o"))

4../hello.exe