Am 22.10.2014 um 15:13 schrieb Matthias Apitz:
We compile and deliver to our customers in a large Library Project an
Apache and the libapr-1.so, among other stuff.

The compilation is done on our production Linux box:

guru@srap08dxoh:~/apr-1.5.1> uname -a
Linux srap08dxoh 3.0.76-0.11-pae #1 SMP Fri Jun 14 08:21:43 UTC 2013 (ccab990) 
i686 athlon i386 GNU/Linux

with GCC:

guru@srap08dxoh:~/apr-1.5.1> gcc -v
Using built-in specs.
Target: i586-suse-linux
Configured with: ../configure --prefix=/usr --infodir=/usr/share/info 
--mandir=/usr/share/man --libdir=/usr/lib --libexecdir=/usr/lib 
--enable-languages=c,c++,objc,fortran,obj-c++,java,ada 
--enable-checking=release --with-gxx-include-dir=/usr/include/c++/4.3 
--enable-ssp --disable-libssp --with-bugurl=http://bugs.opensuse.org/ 
--with-pkgversion='SUSE Linux' --disable-libgcj --disable-libmudflap 
--with-slibdir=/lib --with-system-zlib --enable-__cxa_atexit 
--enable-libstdcxx-allocator=new --disable-libstdcxx-pch 
--enable-version-specific-runtime-libs --program-suffix=-4.3 
--enable-linux-futex --without-system-libunwind --with-cpu=generic 
--build=i586-suse-linux
Thread model: posix
gcc version 4.3.4 [gcc-4_3-branch revision 152973] (SUSE Linux)

After compilation the share library contains an request for GLIBC_2.10:

guru@srap08dxoh:~/apr-1.5.1> strings .libs/libapr-1.so.0.5.1 | fgrep GLIBC
GLIBC_2.1
GLIBC_2.0
GLIBC_2.3.2
GLIBC_2.2
GLIBC_2.1.3
GLIBC_2.10
GLIBC_2.9
GLIBC_2.3.3
GLIBC_2.1.2
GLIBC_2.3
GLIBC_2.1.1
GLIBC_2.4

Start with a more informative command:

nm libapr-1.so.0.5.1 | grep GLIBC

This will show you which symbol is taken with which version from GLIBC. Let us know the result, especially the 2.10 ones.

I don't get any 2.10 dependencies for a 32 Bit SLES 10 system (with old patch levels), but I do get a 2.10 dependency on SLES 11, namely for

accept4@@GLIBC_2.10

Presence of the function accept4() is checked by configure and noted via HAVE_ACCEPT4 in include/arch/unix/apr_private.h. If it is found it is used in network_io/unix/sockets.c.

You can overwrite the configure check (thus disabling the use of accept4()) via exporting an environment variable named apr_cv_accept4 with value "no" before running configure.

The result of the accept4() check in configure is logged in config.log. you can check for the result via

% grep apr_cv_accept4 config.log
apr_cv_accept4=no
% grep HAVE_ACCEPT4 include/arch/unix/apr_private.h
/* #undef HAVE_ACCEPT4 */

Whether in your case it actually is accept4() which is the problem or something else can be checked using the above nm command.

Regards,

Rainer

Reply via email to