在make subvision时,出现以下错误提示:
/usr/local/src/neon-0.29.6/src/ne_auth.c:781: undefined reference to`ne__ntlm_destroy_context’
/usr/local/src/neon-0.29.6/src/ne_auth.c:785: undefined reference to`ne__ntlm_create_context’
collect2: ld returned 1 exit status
make: *** [subversion/libsvn_ra_neon/libsvn_ra_neon-1.la] Error 1
最终解决:在neon的Makefile里加一行CFLAGS = -fPIC -g -O2,重新编译neon
subversion的configure是
./configure --prefix=/usr/local/subversion --with-neon=/usr/local/neon --with-ssl --with-apache-libexecdir=/usr/local/apache
然后在Makefile的include里面加 -I/usr/local/httpd/include
然后又来了一个问题:
E200030 SQLITE compiled for 3.7.17 but running with 3.6.20
http://my.oschina.net/wenic705/blog/55231
最后解决是: rm -f usr/lib64/libsqlite3.so.0 && ln -s usr/local/libsqlite3.so.0.8.6 usr/lib64/libsqlite3.so.0
原 sqlite3 svn错误:编译于3.7.11,运行于3.6.20
经过几番清除,安装,都没有解决,折腾一天后终于发现问题了。
原来sqlite在centos x64系统下的组件目录在usr/lib64/libsqlite3.so.0.8.6,而新安装的sqlite3则放到了 usr/local/lib下,没有覆盖到lib64下,而lib64下却是有优先权,造成编译和运行不能统一版本。可以用新安装的usr/local/libsqlite3.so.0.8.6覆盖usr/lib64/libsqlite3.so.0.8.6,重启下可以解决了。网上有种说法是直接删掉lib64下的老版本,我不敢试,不管是yum还是rpm都依赖这个组件,万一出错很要命。
可能错误现象:
/tools/svn/bin/svn: symbol lookup error: /tools/svn/lib/libsvn_subr-1.so.0: undefined symbol: apr_atomic_xchgptr
错误解决
新配置的服务器,在运行svn命令时,全部出错显示上面的错误信息。
在网上搜索发现,原来这个错误是由于系统已经安装了apr的库文件,而在编译Svn时已经指定了httpd的apr库。
在执svn命令时,优先从系统自带的apr库载入,而引起不必要的错误。
只需要执行以下命令,将apr和apr-util都卸载即可
rpm -e --allmatches apr-util --nodeps
rpm -e --allmatches apr --nodeps
============================================
编译一个文件,出现如上问题。
原因是,libneon.a这个静态库,用到了某些函数如ne_xml_create,但是,在编译时却找不到这些函数的定义。
解决办法:
libneon.a需要用expat,或者libxml来解析。所以,只要在系统中,安装expat(如expat-2.0.0.tar.gz)或者libxml就可以了。
此外,在编译时,还要链接上相应的库,若使用expat,则加上 -lexpat
解决方法:修改/usr/local/src/neon-0.29.6/src/Makefile,将CFLAGS = -g -O2 -prefer-pic 改成 CFLAGS = -fPIC -g -O2,然后重新编译neon,接着再重新编译subversion即可。