Martin, Jason H wrote: > I'm compiling CFEngine 2.1.17 on RHEL2.1, and have reason for it to > use a private version of openssl / BerkeleyDB instead of relying on a > system-installed version. I've been running in to a problem with the > compilation though: > > $ ./configure --with-berkeleydb=/usr/local/BerkeleyDB.4.4 > --with-openssl=/usr/local/cfengine/ssl > [snip] > checking for BerkeleyDB location in /usr/local/BerkeleyDB.4.4... > /usr/local/BerkeleyDB.4.4 > checking Berkeley DB Version... configure: error: This release of > cfengine requires BerkeleyDB 3.2 or later > > The config.log output is: > configure:8608: gcc -o conftest -pthread -g -O2 > -I/usr/local/BerkeleyDB.4.4/include -pthread > -L/usr/local/BerkeleyDB.4.4/lib conftest.c -lm -ldb >&5 > configure:8611: $? = 0 > configure:8613: ./conftest > ./conftest: error while loading shared libraries: libdb-4.4.so: cannot > open shared object file: No such file or directory > > The problem is that since the bdb library location is not in > ld.so.conf, it doesn't know where to find the db libraries. I would > have thought it would first look in the directory specified in the -L > line, but apparently that is not the case. > > Ldd output: > libm.so.6 => /lib/i686/libm.so.6 (0x40025000) > libdb-4.4.so => not found > libpthread.so.0 => /lib/i686/libpthread.so.0 (0x40048000) > libc.so.6 => /lib/i686/libc.so.6 (0x40079000) > /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000) > > I found that defining the LD_RUN_PATH variable prior to compilation to > have the correct libdb directory caused it to look in the correct > location. This is important as it isn't feasible to change every > systems ld.so.conf or set a LD_LIBRARY_PATH prior to execution. > > Perhaps it would be a good idea modify configure/Makefile to use this > feature when the user supplies a custom location, or perhaps as a > fallback if the test for berkeleydb fails? The manpage for ld says > the -R option is supposed to perform the same function as > LD_RUN_PATH, but gcc is just giving me an error when I add -R on to > the BERKELEY_DB_LDFLAGS in configure.
It would seem that the most crossplatform standard way would be to set LD_LIBRARY_PATH in configure.ac during the processing to search for the BerkeleyDB library. -- David Masterson VMware, Inc. Palo Alto, CA _______________________________________________ Help-cfengine mailing list [email protected] http://lists.gnu.org/mailman/listinfo/help-cfengine
