clips 6.30 ubuntu 14.04 linux embedding使用

clips是一个专家系统推理引擎,使用C语言编写,理论上可以与C和C++集成在一起,形成应用程序,最新版本是6.30。想在自己的程序里面嵌入一个用clips做的推理引擎,研究了两天,现在记录一下体会。

对于大神来说,这些可能很简单,但对于我这个使用linux不足一个月的人来说,如何在linux上引用clips的api呢。clips的sourceforge页面上提供有很多版本的代码/安装码/项目码/例子供大家下载。其中windows下的有可执行程序的安装包,装完以后应该是一个直接能用的exe,好像不能嵌入到程序里,这个安装包不安装头文件源代码或者是动态链接库。这个页面上有一个挺方便的windows project包,打开包会发现,里面有建好的vs2010项目,可以编译dll库,clips的exe程序,还有例子。具体的我没有用,但是clips对于windows系统还是很友好的。

说回linux,如果想在linux上安装clips,有两种方法,一种是apt-get,可以安装到6.24的clips,但是只安装可执行文件,你只可以在终端里面打开clips>这个环境,输入事实、规则进行推理。如果想要嵌入到自己的程序,就应该下载sourceforge里面的sourcecode_core这个包,解压发现,core文件夹里全部是头文件和c文件,makefile文件夹里,有一堆的makefile,如果只是想编译可执行文件,那么请使用makefile.gcc,和makefile.g++(后面有重要提示,这里先略过)。前者使用gcc编译出来,方便嵌入C程序,或者在C++里加extern “C”才能用,后者按照C++的模式编译,编完以后直接引用即可。这两个文件编译出来生成一堆.o的中间文件和clips可执行文件。这样你在core目录里输入./clips就可以看到6.30的clips启动了。但是这样编译的结果如果想要引入到自己的程序,理论上应该把那一大堆的.o文件和自己的项目相连接,好像有点麻烦。

makefile.lib和makefile.lib++这两个makefile文件,是用来生成库的,其实他的编译过程和makefile.gcc和makefile.g++差不多,只不过是跳过了main.c,不生成main.o,并且将所有中间文件加入到最终生成的libclips.a库里面,ar这个命令不熟,大概是用来生成静态库的命令。

生成了库之后,就可以按照makefile.lib里面提示的命令形式,编译main.c,通过api,生成自己的推理引擎。

重要提示:

1.我只使用过makefile.gcc 和makefile.lib,这两个文件你应该删一下后缀,再扔到core里面make

2.所有的makefile文件,如果在make过程中提示cos,log等数学运算函数没有定义,请打开makefile文件,在.c.o: gcc这一块的最末尾,也就是-Wstrict-prototypes -Waggregate-return -Wno-implicit $<这一行加“ -lm”注意,-lm前有个空格。

3.最后我用gcc编译main.c的命令是:

gcc -o main main.c -I./clips/include -L./clips/lib -lclips -lm

是的,我把目录重新安排了一下,所有头文件放入clips/include,那个唯一生成的libclips.a放在clips/lib里,回车即可生成可执行文件main。

阶段性成果到此完成,不过似乎这才走出了长征的第一步,接下来还应该结合advance programing guide这个文档,自己定制推理过程。如果要想将clips加入到多线程的框架里,也有很多需要实验的东西,慢慢来咯。


你可能感兴趣的:(c,linux,gcc,makefile,Clips)