I couldn't successfully compile Apache (2.1.6-alpha) with SLES9
(2.6.5-7.97-smp, 64bit). 

The error is:
...-lrt -lcrypt  -lpthread -ldl  -lgdbm -ldb-4.2 /usr/lib/libexpat.la
/root/huxuekun/httpd-2.1.6-alpha/srclib/apr/libapr-1.la -lrt -lcrypt
-lpthread -ldl
/usr/lib/libexpat.so: could not read symbols: Invalid operation
collect2: ld returned 1 exit status
make[3]: *** [libaprutil-1.la] Error 1
make[3]: Leaving directory
`/root/huxuekun/httpd-2.1.6-alpha/srclib/apr-util'
make[2]: *** [all-recursive] Error 1
make[2]: Leaving directory
`/root/huxuekun/httpd-2.1.6-alpha/srclib/apr-util'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/root/huxuekun/httpd-2.1.6-alpha/srclib'
make: *** [all-recursive] Error 1  

Since this is 64 bit, libexpat.la should be reference to /usr/lib64
instead of /usr/lib. 

So, I think the below patch could fix the problem for x86_64 bit Linux. 

diff -Nraup httpd-2.1.6-alpha.orig/srclib/apr-util/build/apu-conf.m4
httpd-2.1.6-alpha.lib64/srclib/apr-util/build/apu-conf.m4
--- httpd-2.1.6-alpha.orig/srclib/apr-util/build/apu-conf.m4
2005-08-11 10:16:44.653903328 +0800
+++ httpd-2.1.6-alpha.lib64/srclib/apr-util/build/apu-conf.m4
2005-08-11 10:19:56.132794112 +0800
@@ -40,7 +40,14 @@ AC_DEFUN(APU_TEST_EXPAT,[

   expat_libtool=""

-  if test -r "$1/lib/expat.h.in"; then
+  if test -r "$1/include/expat.h" -a \
+    -r "$1/lib64/libexpat.la"; then
+    dnl Expat 1.95.* installation on certain 64-bit platforms (with
libtool)
+    expat_include_dir="$1/include"
+    expat_ldflags="-L$1/lib64"
+    expat_libs="-lexpat"
+    expat_libtool="$1/lib64/libexpat.la"
+  elif test -r "$1/lib/expat.h.in"; then
     dnl Expat 1.95.* distribution
     expat_include_dir="$1/lib"
     expat_ldflags="-L$1/lib"
@@ -54,13 +61,6 @@ AC_DEFUN(APU_TEST_EXPAT,[
     expat_libs="-lexpat"
     expat_libtool="$1/lib/libexpat.la"
   elif test -r "$1/include/expat.h" -a \
-    -r "$1/lib64/libexpat.la"; then
-    dnl Expat 1.95.* installation on certain 64-bit platforms (with
libtool)
-    expat_include_dir="$1/include"
-    expat_ldflags="-L$1/lib64"
-    expat_libs="-lexpat"
-    expat_libtool="$1/lib64/libexpat.la"
-  elif test -r "$1/include/expat.h" -a \
     -r "$1/lib/libexpat.a"; then
     dnl Expat 1.95.* installation (without libtool)
     dnl FreeBSD textproc/expat2

Since some Linux (64bit) distributions maybe have lib/libexpat.la file,
so I put the lib64 check early. Any comments?  

Thanks,
Xuekun Hu

Reply via email to