解决Sphinx iconv 链接出错的问题。
错误信息:
mv -f .deps/sphinx.Tpo .deps/sphinx.Po
rm -f libsphinx.a
ar
cru libsphinx.a sphinx.o sphinxexcerpt.o sphinxquery.o sphinxsoundex.o
sphinxmetaphone.o sphinxstemen.o sphinxstemru.o sphinxstemcz.o
sphinxutils.o md5.o sphinxstd.o sphinxsort.o sphinxexpr.o sphinxfilter.o
sphinxsearch.o sphinxrt.o tokenizer_zhcn.o
ranlib libsphinx.a
g++
-Wall -g -D_FILE_OFFSET_BITS=64 -O3 -DNDEBUG -o indexer indexer.o
libsphinx.a -rdynamic -L/usr/lib64/mysql -lmysqlclient -lz -lcrypt
-lnsl -lm -lssl -lcrypto -L/usr/local/mmseg3/lib/ -lmmseg -ldl -lm -lz
-lexpat -L/usr/local/lib -lrt -lpthread
libsphinx.a(sphinx.o): In function `xmlUnknownEncoding':
/usr/local/src/sphinx/coreseek-4.1-beta/csft-4.1/src/sphinx.cpp:22292: undefined reference to `libiconv_open'
/usr/local/src/sphinx/coreseek-4.1-beta/csft-4.1/src/sphinx.cpp:22310: undefined reference to `libiconv'
/usr/local/src/sphinx/coreseek-4.1-beta/csft-4.1/src/sphinx.cpp:22316: undefined reference to `libiconv_close'
collect2: ld 返回 1
make[2]: *** [indexer] 错误 1
make[2]: Leaving directory `/usr/local/src/sphinx/coreseek-4.1-beta/csft-4.1/src'
make[1]: *** [all] 错误 2
make[1]: Leaving directory `/usr/local/src/sphinx/coreseek-4.1-beta/csft-4.1/src'
make: *** [all-recursive] 错误 1
第一种方法,修改Makefile 文件,增加
将
LIBS = -lm -lexpat -L/usr/local/lib
改成
LIBS = -lm -lexpat -liconv -L/usr/local/lib
第二种,直接修改 src/sphinx.cpp,将iconv.h 改为绝对路径。
I have the same problem, and I change #include "iconv.h" to #include <iconv.h> to
#include </usr/include/iconv.h>
And make run ok !
第三种解决办法:打开configure文件,找到“#define USE_LIBICONV 1”,将注释去掉,并将1改成0。