On Sat, 21 Aug 2010, Geoffrey Hutchison wrote: > > On Aug 17, 2010, at 11:43 AM, Brian Smith wrote: > >> get is why openbabel is picking up these libraries at all the e... >> definitions are in /usr/local/include/zlibemboss.h and the EMBOSS zlib >> library is /usr/local/lib/libezlib*, so why should they ever be found by >> openbabel? > > Well, that's more of a "how does autoconf work" question. I don't know. You > could try using CMake to build the OB-2.2.3 source code, which might ignore > the libezlib bits. > > Install CMake, create a build directory, and then cmake /path/to/source/dir > > Hope that helps, > -Geoff
Thanks for the suggestion Geoff. I tried that but end up in a similar place. So with freshly unpacked openbabel tarball in /usr/local/src/openbabel-2.2.3/ and doing mkdir /usr/local/src/openbabel-build cd /usr/local/src/openbabel-build cmake ../openbabel-2.2.3 make ends in [ 26%] Building CXX object src/CMakeFiles/openbabel.dir/ops/optransform.o Linking CXX shared library libopenbabel.so CMakeFiles/openbabel.dir/obconversion.o: In function `zlib_stream::basic_unzip_streambuf<char, std::char_traits<char> >::initialize(int)': /usr/local/src/openbabel-2.2.3/src/zipstreamimpl.h:329: undefined reference to `einflateInit2_' CMakeFiles/openbabel.dir/obconversion.o: In function `zlib_stream::basic_zip_streambuf<char, std::char_traits<char> >::zip_to_stream(char*, long)': /usr/local/src/openbabel-2.2.3/src/zipstreamimpl.h:251: undefined reference to `ecrc32' /usr/local/src/openbabel-2.2.3/src/zipstreamimpl.h:256: undefined reference to `edeflate' CMakeFiles/openbabel.dir/obconversion.o: In function `zlib_stream::basic_zip_streambuf<char, std::char_traits<char> >::flush()': /usr/local/src/openbabel-2.2.3/src/zipstreamimpl.h:150: undefined reference to `ecrc32' /usr/local/src/openbabel-2.2.3/src/zipstreamimpl.h:155: undefined reference to `edeflate' CMakeFiles/openbabel.dir/obconversion.o: In function `zlib_stream::basic_unzip_streambuf<char, std::char_traits<char> >::unzip_from_stream(char*, long)': /usr/local/src/openbabel-2.2.3/src/zipstreamimpl.h:557: undefined reference to `einflate' /usr/local/src/openbabel-2.2.3/src/zipstreamimpl.h:563: undefined reference to `ecrc32' CMakeFiles/openbabel.dir/obconversion.o: In function `zlib_stream::basic_unzip_streambuf<char, std::char_traits<char> >::seekpos(std::fpos<__mbstate_t>, std::_Ios_Openmode)': /usr/local/src/openbabel-2.2.3/src/zipstreamimpl.h:445: undefined reference to `einflateEnd' CMakeFiles/openbabel.dir/obconversion.o: In function `zlib_stream::basic_unzip_streambuf<char, std::char_traits<char> >::seekoff(long, std::_Ios_Seekdir, std::_Ios_Openmode)': /usr/local/src/openbabel-2.2.3/src/zipstreamimpl.h:424: undefined reference to `einflateEnd' CMakeFiles/openbabel.dir/obconversion.o: In function `~basic_zip_streambuf': /usr/local/src/openbabel-2.2.3/src/zipstreamimpl.h:88: undefined reference to `edeflateEnd' /usr/local/src/openbabel-2.2.3/src/zipstreamimpl.h:88: undefined reference to `edeflateEnd' CMakeFiles/openbabel.dir/obconversion.o: In function `~basic_unzip_streambuf': /usr/local/src/openbabel-2.2.3/src/zipstreamimpl.h:342: undefined reference to `einflateEnd' CMakeFiles/openbabel.dir/obconversion.o: In function `~basic_zip_streambuf': /usr/local/src/openbabel-2.2.3/src/zipstreamimpl.h:88: undefined reference to `edeflateEnd' CMakeFiles/openbabel.dir/obconversion.o: In function `basic_zip_streambuf': /usr/local/src/openbabel-2.2.3/src/zipstreamimpl.h:74: undefined reference to `edeflateInit2_' CMakeFiles/openbabel.dir/obconversion.o: In function `~basic_unzip_streambuf': /usr/local/src/openbabel-2.2.3/src/zipstreamimpl.h:342: undefined reference to `einflateEnd' /usr/local/src/openbabel-2.2.3/src/zipstreamimpl.h:342: undefined reference to `einflateEnd' collect2: ld returned 1 exit status make[2]: *** [src/libopenbabel.so.3.0.3] Error 1 make[1]: *** [src/CMakeFiles/openbabel.dir/all] Error 2 make: *** [all] Error 2 So finally I understand the cause of the problem, I think. EMBOSS installs /usr/local/include/zconf.h /usr/local/include/zlibemboss.h /usr/local/include/zlib.h /usr/local/include/zutil.h and zlib.h calls zconf.h which calls zlibemboss.h which #defines all the e... function names. So for a workaround I can (at least temporarily) rename /usr/local/include/zlib.h Alternatively I think messing with the Makefile to change the LIBS = -lz to -lez would allow the EMBOSS installed ezlib libraries to be linked instead of the system ones. Are there any configure or cmake arguments I can pass to say "prefer system include to /usr/local/include"? ------------------------------------------------------------------------------ Sell apps to millions through the Intel(R) Atom(Tm) Developer Program Be part of this innovative community and reach millions of netbook users worldwide. Take advantage of special opportunities to increase revenue and speed time-to-market. Join now, and jumpstart your future. http://p.sf.net/sfu/intel-atom-d2d _______________________________________________ OpenBabel-discuss mailing list OpenBabel-discuss@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/openbabel-discuss