On Tue, Jan 06, 2015 at 09:00:42AM +0800, 亚男(Timandes) wrote: > This is my configuration options: > > # ./configure --prefix=/usr/local/subversion-1.8.11 \ > --with-apr=/usr/local/apr-1.4.6/bin/apr-1-config \ > --with-apr-util=/usr/local/apr-util-1.5.1/bin/apu-1-config 、 > --with-sqlite=/usr/local/sqlite-autoconf-3071501 、 > --with-zlib=/usr/local/zlib-1.2.8 > > after that, is: > # make && make install > > But when i try to use it, i found this warning: > # /usr/local/subversion-1.8.11/bin/svn --version > /usr/local/subversion-1.8.11/bin/svn: /lib64/libz.so.1: no version > information available (required by > /usr/local/subversion-1.8.11/lib/libsvn_delta-1.so.0) > svn, version 1.8.11 (r1643975) > ... > > Then i realize that configure program maybe use pre-installed zlib in my > system. > # ldd /usr/local/subversion/lib/libsvn_delta-1.so.0|grep libz > /usr/local/subversion/lib/libsvn_delta-1.so.0: /lib64/libz.so.1: no version > information available (required by > /usr/local/subversion/lib/libsvn_delta-1.so.0) > libz.so.1 => /lib64/libz.so.1 (0x00007ff5c959c000) > > Other information: > # ln -s /usr/local/subversion-1.8.11 /usr/local/subversion > > # uname -a > Linux log4.zg.zwt.qihoo.net 2.6.32-220.el6.x86_64 #1 SMP Tue Dec 6 19:48:22 > GMT 2011 x86_64 x86_64 x86_64 GNU/Linux > > # cat /etc/redhat-release > CentOS release 6.2 (Final) > > # rpm -qa|grep zlib > zlib-1.2.3-27.el6.x86_64 > > # ll /usr/local/zlib-1.2.8/ > total 12 > drwxr-xr-x 2 root root 4096 Oct 16 09:20 include > drwxr-xr-x 3 root root 4096 Oct 16 09:20 lib > drwxr-xr-x 3 root root 4096 Oct 16 09:20 share > > Part of config.log: > ... > configure:21895: zlib library configuration > configure:21902: checking zlib.h usability > configure:21902: gcc -c -g -O2 -g -O2 -pthread -DLINUX=2 -D_REENTRANT > -D_GNU_SOURCE -I/usr/local/zlib-1.2.8/include conftest.c >&5 > configure:21902: $? = 0 > configure:21902: result: yes > configure:21902: checking zlib.h presence > configure:21902: gcc -E -DLINUX=2 -D_REENTRANT -D_GNU_SOURCE > -I/usr/local/zlib-1.2.8/include conftest.c > configure:21902: $? = 0 > configure:21902: result: yes > configure:21902: checking for zlib.h > configure:21902: result: yes > configure:21910: checking for inflate in -lz > configure:21935: gcc -o conftest -g -O2 -g -O2 -pthread -DLINUX=2 > -D_REENTRANT -D_GNU_SOURCE -I/usr/local/zlib-1.2.8/include > -L/usr/local/zlib-1.2.8/lib conftest.c -lz >&5 > configure:21935: $? = 0 > configure:21944: result: yes > ... > ac_cv_header_zlib_h=yes > ... > LDFLAGS=' -L/usr/local/zlib-1.2.8/lib' > ... > SVN_ZLIB_INCLUDES='-I/usr/local/zlib-1.2.8/include' > SVN_ZLIB_LIBS='-lz' > ...
This is likely a problem caused by libtool. libtool passes several -L flags to the linker, one for each library directory used during the build. Sometimes these -L flags are passed in the wrong order. My guess is that there is another library (not zlib) in /lib64 used by the build. If libtool generates linker arguments which contain -L/lib64 before -L/usr/local/zlib-1.2.8/lib the linker finds libz in /lib64 first! To verify if this theory, run libtool in debug mode and check the linker arguments used. For example: $ touch subversion/libsvn_subr/compress.c $ make subversion/libsvn_subr/libsvn_subr-1.la /bin/sh "/home/stsp/svn/svn-trunk/libtool" --tag=CC --silent --mode=compile gcc -std=c89 ... You see a long libtool command line which includes the --silent option. Copy-paste the entire command line and replace --silent with --debug, and run it. You'll see the argument list libtool is generating for the linker. Is -L/lib64 before -L/usr/local/zlib-1.2.8/lib? I had the same problem and could only work around it by not using any dependencies from a library directory I did not want the build to use. So if you don't use any library from /lib64 this problem should disappear. You could install other dependencies (such as APR, sqlite, etc.) into /usr/local/ and make the build use them, too.