robbe 编译完毕,无法加载,friso_dic_get 问题?

ueaner 发布于 2013/10/08 00:49
阅读 385
收藏 0

系统环境:
[root@aboutc ~]# cat /etc/redhat-release 
CentOS release 6.4 (Final)

Friso 1.3
Robbe 1.2
PHP 5.5.4


friso 没有任何问题:
[root@aboutc ~]# whereis friso
friso: /etc/friso.ini /usr/local/bin/friso
[root@aboutc ~]#
[root@aboutc ~]# /usr/local/bin/friso -init /etc/friso.ini 
friso initialized in 0.120000sec
+-----------------------------------------------------------+
| friso - a chinese word segmentation writen by c.          |
| bug report email - chenxin619315@gmail.com.               |
| or: visit http://code.google.com/p/friso.                 |
|     java edition for http://code.google.com/p/jcseg       |
| type 'quit' to exit the program.                          |
+-----------------------------------------------------------+
friso>> 我是中国人
分词结果:
我/ 是/ 中国人/ 
Done, cost < 0.000000sec
friso>> quit
Thanks for trying friso.
[root@aboutc ~]# 


但是 robbe.so 无法加载:
[root@aboutc ~]# cd /usr/local/src/robbe-1.2/src/
[root@aboutc src]# phpize
[root@aboutc src]# ./configure
按照:http://www.oschina.net/question/853816_119031 编辑 Makefile 添加:-lfriso
[root@aboutc src]# make
[root@aboutc src]# make install

编辑php.ini,添加:
extension = robbe.so

[robbe]
;configuration file for robbe.
robbe.ini_file = /etc/friso.ini


[root@aboutc src]# service php-fpm reload
Reloading php-fpm:                                         [  OK  ]
[root@aboutc src]# php -m | grep robbe
PHP Warning:  PHP Startup: Unable to load dynamic library '/usr/lib64/php/modules/robbe.so' - /usr/lib64/php/modules/robbe.so: undefined symbol: friso_dic_get in Unknown on line 0


@狮子的魂?

加载中
0
狮子的魂
狮子的魂

1. 编辑Makefile添加"-lfriso"的时候, 请确保两个地方都需要添加. 

也就是164行和168行. 系统不一样Makefile兴许会不同. 请对照Makefile找到对应的地方.


另外还发现两个其他的问题: 

2. 配置文件[robbe]中的首字母要大写: 即: [Robbe]

3. 确保/etc/firso.ini中的friso.lex_dir指向词库目录.

狮子的魂
狮子的魂
回复 @ueaner : 恩, 这个最重要了, 不客气...
ueaner
ueaner
[root@aboutc src]# php -m | grep robbe robbe 重新编译了一下,可以了,thx。
0
ueaner
ueaner

引用来自“狮子的魂”的答案

1. 编辑Makefile添加"-lfriso"的时候, 请确保两个地方都需要添加. 

也就是164行和168行. 系统不一样Makefile兴许会不同. 请对照Makefile找到对应的地方.


另外还发现两个其他的问题: 

2. 配置文件[robbe]中的首字母要大写: 即: [Robbe]

3. 确保/etc/firso.ini中的friso.lex_dir指向词库目录.

感谢答复。不过问题还是没有解决:


1. Makefile 中的两处 -lfriso 都加了(行数也确是不同 180行和185行):
robbe.lo: /usr/local/src/robbe-1.2/src/robbe.c
    $(LIBTOOL) --mode=compile $(CC)  -I. -I/usr/local/src/robbe-1.2/src $(COMMON_FLAGS) $(CFLAGS_CLEAN) $(EXTRA_CFLAGS)  -c /usr/local/src/robbe-1.2/src/robbe.c -lfriso -o robbe.lo 
$(phplibdir)/robbe.la: ./robbe.la
    $(LIBTOOL) --mode=install cp ./robbe.la $(phplibdir)

./robbe.la: $(shared_objects_robbe) $(ROBBE_SHARED_DEPENDENCIES)
    $(LIBTOOL) --mode=link $(CC) $(COMMON_FLAGS) $(CFLAGS_CLEAN) $(EXTRA_CFLAGS) $(LDFLAGS) -lfriso -o $@ -export-dynamic -avoid-version -prefer-pic -module -rpath $(phplibdir) $(EXTRA_LDFLAGS) $(shared_objects_robbe) $(ROBBE_SHARED_LIBADD)

2. [Robbe] 首字母已大写

3. /etc/friso.ini 中 lex_dir 已配置,否则不会有分词结果
 friso.lex_dir = /usr/local/src/friso/dict/


不知是不是有什么遗漏的地方? 

0
狮子的魂
狮子的魂
重新编译下, 哥们!!! 
返回顶部
顶部