I just downloaded, configured, made, and installed 2.1.30.
It appears that libtool is not correctly building
executables, on AIX 5.1.
Symptom:
When I try & run ldapsearch from /usr/local/bin I get:
exec(): 0509-036 Cannot load program /usr/local/bin/ldapsearch because of the following errors:
0509-150 Dependent module ../../libraries/libldap/.libs/libldap.a(libldap.so.2) could not be loaded.
0509-022 Cannot load module ../../libraries/libldap/.libs/libldap.a(libldap.so.2).
0509-026 System error: A file or directory in the path name does not exist.
NOTE: If I cd to the "clients/tools" directory, and run "./ldapsearch", the command works just fine.
At the risk of "information overload", I've included my configure, link example, and executable header dump
below.
Here is my configure command:
CC=xlc_r \
CPPFLAGS="-I/usr/local/include \
-I/usr/local/ssl/include \
-I/usr/local/BerkeleyDB.4.2/include" \
LDFLAGS="-L/usr/local/ssl/lib \
-L/usr/local/lib \
-L/usr/local/BerkeleyDB.4.2/lib" \
MKDEP=/dnload/ldap_dir/openldap-2.1.30/build/mkdep.aix \
./configure --with-cyrus-sasl \
--enable-bdb \
--with-kerberos
Here are the link steps for ldapsearch:
/bin/sh /dnload/ldap_dir/openldap-2.1.30/libtool --mode=link xlc_r -static -g -L/usr/local/ssl/lib \
-L/usr/local/lib -L/usr/local/BerkeleyDB.4.2/lib -o ldapsearch ldapsearch.o common.o \
ldsversion.o ../../libraries/libldif/libldif.a ../../libraries/liblutil/liblutil.a ../../libraries/libldif/libldif.a \
../../libraries/libldap/libldap.la ../../libraries/liblber/liblber.la -lsasl2 -lssl -lcrypto -ls
mkdir .libs
xlc_r -g -o ldapsearch ldapsearch.o common.o ldsversion.o -L/usr/local/ssl/lib -L/usr/local/lib \
-L/usr/local/BerkeleyDB.4.2/lib ../../libraries/liblutil/liblutil.a ../../libraries/libldif/libldif.a \
../../libraries/libldap/.libs/libldap.a /dnload/ldap_dir/openldap-2.1.30/libraries/liblber/.libs/liblber.a \
../../libraries/liblber/.libs/liblber.a /usr/local/lib/libsasl2.a -ldl -lssl -lcrypto -ls \
-Wl,-bnolibpath -Wl,-blibpath:/usr/local/ssl/lib:/usr/lib:/lib^M
Here is a dump of the ldapsearch executable loader section:
In clients/tools:
***Import File Strings***
INDEX PATH BASE MEMBER
0 /usr/local/ssl/lib:/usr/lib:/lib
1 libs.a shr.o
2 libpthreads.a shr_comm.o
3 libpthreads.a shr_xpg5.o
4 /dnload/ldap_dir/openldap-2.1.30/libraries/liblber/.libs liblber.a liblber.so.2
5 ../../libraries/libldap/.libs libldap.a libldap.so.2
In /usr/local/bin:
***Import File Strings***
INDEX PATH BASE MEMBER
0 /usr/local/ssl/lib:/usr/lib:/lib
1 libs.a shr.o
2 libpthreads.a shr_comm.o
3 libpthreads.a shr_xpg5.o
4 /dnload/ldap_dir/openldap-2.1.30/libraries/liblber/.libs liblber.a liblber.so.2
5 ../../libraries/libldap/.libs libldap.a libldap.so.2
Notice they are the same…!!!
The Index 4 & 5 libraries. They have they are not just the library name, they use full or relative path,
instead of updating the Index 0 (which is the LIBPATH).
As a comparison, here's a dump of he loader section of /usr/local/bin/ldapsearch
(openldap 2.1.12) on our AIX 4.3.3 system:
***Import File Strings***
INDEX PATH BASE MEMBER
0 /download/LDAP/openldap-2.1.12/libraries/libldap/.libs:/download/LDAP/openldap-2.1.12/libraries/liblb
er/.libs:/usr/local/lib:/usr/lib:/lib
1 libs.a shr.o
2 libpthreads.a shr_comm.o
3 libpthreads.a shr_xpg5.o
4 liblber.a liblber.so.2
5 libldap.a libldap.so.2
6 libsasl2.a