|
From: | Kurt Reimer |
Subject: | RE: Problems configuring cfengine 2.1.17 on Solaris10 |
Date: | Wed, 21 Dec 2005 14:23:04 -0500 (EST) |
I do have libgcc_s.so.1 installed in /usr/local/lib, and I now find that my extracted test program will compile and run with:
bash-3.00# export LD_LIBRARY_PATH=/usr/local/lib This also allows the original configure script to succeed!I find this to be a little disturbing, as it seems to mean that I have to have GCC, or at least the gcc libraries, installed on any system on which I'd like to run my cfengine executables. It seems to be that even when building a shared library executable gcc should statically resolve calls to it's own internal libraries.
Since retrieving and installing the gcc 3.3.2 package from www.sunfreeware.com, I realized that Sun Microsystems already included gcc 3.4.3 in the Solaris10 distribution. They just can't bring themselves to put Open Source software in /usr/local like everybody else, so they put it in /usr/sfw ((s)un(f)ree(w)are?). I may try backing out 3.3.2 and using the Sun-supplied package.
Yours, Kurt
The
'real' error is:
ld.so.1: ./conftest: fatal: libgcc_s.so.1: open failed: No such file or directory So, the problem isn't with Berkeley DB, except that perhaps BDB requires libgcc. Is libgcc installed? -Jason Martin-----Original Message----- From: Kurt Reimer [mailto:address@hidden Sent: Wednesday, December 21, 2005 8:14 AM To: Martin, Jason H Cc: address@hidden; address@hidden; address@hidden Subject: RE: Problems configuring cfengine 2.1.17 on Solaris10What is the exact output from the config.log for when the problem occurs? -Jason MartinJason, Thanks for taking a look at this. Here's the relevant part of the log output from the original configure script, with my email client inserting line breaks and me adding in backslashes: ====================================================================== configure:8582: checking Berkeley DB Version configure:8611: gcc -o conftest -D_REENTRANT -pthread -g -O2 \ -I/usr/local/BerkeleyDB.4.4//include -D_REENTRANT -pthread \ -L/usr/local/BerkeleyDB.4.4//lib -R/usr/local/BerkeleyDB.4.4//lib \ conftest.c -lnsl -lsocket -lm -ldb >&5 gcc: unrecognized option `-pthread' gcc: unrecognized option `-pthread' configure:8614: $? = 0 configure:8616: ./conftest ld.so.1: ./conftest: fatal: libgcc_s.so.1: open failed: No such \ file or directory ./configure: line 8617: 26012 Killed ./conftest$ac_exeext configure:8619: $? = 137 configure: program exited with status 137 configure: failed program was: | /* confdefs.h. */ | | #define PACKAGE_NAME "" | #define PACKAGE_TARNAME "" | #define PACKAGE_VERSION "" | #define PACKAGE_STRING "" | #define PACKAGE_BUGREPORT "" | #define PACKAGE "cfengine" | #define VERSION "2.1.17" | #define HAVE_PTHREAD 1 | #define YYTEXT_POINTER 1 | #define STDC_HEADERS 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_STAT_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_MEMORY_H 1 | #define HAVE_STRINGS_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_UNISTD_H 1 | #define HAVE_LIBKSTAT 1 | #define HAVE_GETLOADAVG 1 | #define HAVE_LIBM 1 | #define HAVE_LIBSOCKET 1 | #define HAVE_LIBNSL 1 | #define USE_BERKELEY_DB 1 | /* end confdefs.h. */ | | #include <db.h> | #include <stdio.h> | int main(void) | { | printf("%d.%d.%d ",DB_VERSION_MAJOR,DB_VERSION_MINOR,DB_VERSION_PATCH); | if (DB_VERSION_MAJOR < 3 || (DB_VERSION_MAJOR == 3 && \ DB_VERSION_MINOR < 2)) | exit(1); | exit(0); | } | configure:8629: error: This release of cfengine requires \ BerkeleyDB 3.2 or later ====================================================================== The second invocation of this program doesn't cause the configure script to abort, but it does define CF_OLD_DB, which generates compile errors during the make. After collecting this output, I tried running the gcc compile command as it appears above on a copy of the test program (without the output redirection), and it does compile OK and generate the same error message when I run it. I find that I can make the program run successfully if I take the "-lbd" off the compile string OR if I go into /usr/local/BerkeleyDB.4.4/lib and remove all the shared libraries. (I guess this forces use of the static libraries in that directory. I know that when I remove them too the compile fails.) I'm not sure what all this means, but I now have less confidence that the cfengine executables I ended up with are worth anything. Does this mean that I built the Berkeley DB incorrectly? Yours, Kurt-----Original Message----- >>From: >> address@hidden[mailto:address@hidden org] On Behalf Of Kurt Reimer Sent: Tuesday, December 20, 2005 1:56 PM To: address@hidden; address@hidden Subject: Problems configuring cfengine 2.1.17 on Solaris10 Hello, Like previous posters I'm running into problems with the configure script not recognizing the BerkeleyDB version number, and it doesn't seem to have anything to do with LD_LIBRARY_PATH or LD_RUN_PATH: ******************* bash-3.00# export \ LD_LIBRARY_PATH=/usr/local/BerkeleyDB.4.4/:/usr/local/Berkeley DB.4.4/lib/ bash-3.00# export \LD_RUN_PATH=/usr/local/BerkeleyDB.4.4/:/usr/local/BerkeleyDB.4.4/lib/bash-3.00# export CFLAGS=-I/usr/local/BerkeleyDB.4.4/include bash-3.00# ./configure --with-berkeleydb=/usr/local/BerkeleyDB.4.4/ \ --with-openssl=/usr/sfw checking build system type... sparc-sun-solaris2.10 . . . . . . . . . . . . . . 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 bash-3.00# (I added the backslashes where my email client wrapped the cut-and-pasted command lines.) ******************* I've gone so far as to comment out all but the "exit(0);" return in the test program that is being run at this point in the configure script, with the same result: ******************* #include <db.h> #include <stdio.h> int main(void) { /* printf("%d.%d.%d ", DB_VERSION_MAJOR,DB_VERSION_MINOR,DB_VERSION_PATCH); if (DB_VERSION_MAJOR < 3 || (DB_VERSION_MAJOR == 3 && DB_VERSION_MINOR < 2)) exit(1); */ exit(0); } ******************* I can get cfengine to configure, make, and install if I edit the configure script to dummy out the two places where it runs the test program listed above. Note that the configure, make, and make install all succeed without the help of LD_LIBRARY_PATH, LD_RUN_PATH, or any special include directories defined in CFLAGS: ******************* bash-3.00# diff configure.works configure 8618,8620c8618 < ############################## < # ac_status=$? This test is broken < ac_status=0 ---ac_status=$?8687,8690c8685,8687 < ################################ < #cat >>confdefs.h <<\_ACEOF Same program, still broken < ##define CF_OLD_DB 1 < #_ACEOF ---cat >>confdefs.h <<\_ACEOF #define CF_OLD_DB 1 _ACEOFbash-3.00# cp configure.works configure bash-3.00# unset LD_LIBRARY_PATH bash-3.00# unset LD_RUN_PATH bash-3.00# unset CFLAGS bash-3.00# ./configure --with-berkeleydb=/usr/local/BerkeleyDB.4.4/ --with-openssl=/usr/sfw checking build system type... sparc-sun-solaris2.10 . . . . . . . . . . . . . . checking for library containing socket... none required checking for BerkeleyDB location in /usr/local/BerkeleyDB.4.4/... /usr/local/BerkeleyDB.4.4/ checking Berkeley DB Version... OK checking Berkeley DB API... checking for db_create in -ldb... yes checking for OpenSSL location... /usr/sfw . . . . . . . . . . . . . . DONE: Configuration done. Run make/gmake to build cfengine. bash-3.00# make[1]: Entering directory `/usr/local/src/cfengine-2.1.17/pub' if gcc -DHAVE_CONFIG_H -I. -I. -I../src -I/usr/local/BerkeleyDB.4.4//include -I/usr/sfw/include-D_REENTRANT-pthread -D_REENTRANT -pthread -g -O2 -I/usr/local/BerkeleyDB.4.4//include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -g -O2 -Wreturn-type -Wmissing-prototypes -Wuninitialized -D_REENTRANT -pthread -g -O2 -I/usr/local/BerkeleyDB.4.4//include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -MT getopt.o -MD -MP -MF ".deps/getopt.Tpo" -c -o getopt.o getopt.c; \ then mv -f ".deps/getopt.Tpo" ".deps/getopt.Po"; else rm -f ".deps/getopt.Tpo"; exit 1; fi gcc: unrecognized option `-pthread' gcc: unrecognized option `-pthread' gcc: unrecognized option `-pthread' if gcc -DHAVE_CONFIG_H -I. -I. -I../src -I/usr/local/BerkeleyDB.4.4//include -I/usr/sfw/include-D_REENTRANT-pthread -D_REENTRANT -pthread -g -O2 -I/usr/local/BerkeleyDB.4.4//include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -g -O2 -Wreturn-type -Wmissing-prototypes -Wuninitialized -D_REENTRANT -pthread -g -O2 -I/usr/local/BerkeleyDB.4.4//include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -MT getopt1.o -MD -MP -MF ".deps/getopt1.Tpo" -c -o getopt1.o getopt1.c; \ then mv -f ".deps/getopt1.Tpo" ".deps/getopt1.Po"; else rm -f ".deps/getopt1.Tpo"; exit 1; fi . . . . . . . . . . .....and so on.... ******************* "make" and "make install" both succeed. I haven't yet begun to try to use cfengine, but I suspect the executables will work properly. It would be nice if the configuration process would work out-of-the-box. If I'm dong something wrong please let me know. Yours, Kurt Reimer _______________________________________________ Help-cfengine mailing list address@hidden http://lists.gnu.org/mailman/listinfo/help-> cfengine
[Prev in Thread] | Current Thread | [Next in Thread] |