Re: [htdig] 3.1.5 Compile problems on Linux


Subject: Re: [htdig] 3.1.5 Compile problems on Linux
From: Gilles Detillieux (grdetil@scrc.umanitoba.ca)
Date: Wed Dec 06 2000 - 12:30:59 PST


According to Foerst, Daniel P.:
> I am using RedHat 6.2 with GCC 2.95.2 with GNU ld 2.9.5, and I have
> libstdc++ 2.9.0-30 installed (latest version). This is htdig-3.1.5
>
> I am not able to figure out what is going wrong.. any assistance you can
> lend is greatly appreciated!
...
> I run the configure and have the following...
...
> prefix= /home2/htdig
>
> # This specifies the root of the directory tree to be used for programs
> # installed by ht://Dig
> exec_prefix= ${prefix}

I'm not positive about this, but I think in makefiles like this one, you
need to use the syntax $(prefix), and not ${prefix} (i.e. use parentheses
instead of braces).

...
> When I run make, everything works well, but then this slew of errors
> takes place.
>
> Entering directory `/sys2/installs/htdig-3.1.5/htfuzzy'
> gcc -o htfuzzy -L../htlib -L../htcommon -L../db/dist -L/usr/lib
> Endings.o EndingsDB.o Exact.o Fuzzy.o Metaphone.o Soundex.o
> SuffixEntry.o Synonym.o htfuzzy.o Substring.o Prefix.o
> ../htcommon/libcommon.a ../htlib/libht.a ../db/dist/libdb.a
> EndingsDB.o: In function `Endings::createDB(Configuration &)':
> /sys2/installs/htdig-3.1.5/htfuzzy/EndingsDB.cc:46: undefined reference
> to `cout'
> /sys2/installs/htdig-3.1.5/htfuzzy/EndingsDB.cc:46: undefined reference
> to `ostream::operator<<(char const *)'
> /sys2/installs/htdig-3.1.5/htfuzzy/EndingsDB.cc:52: undefined reference
> to `cout'
> /sys2/installs/htdig-3.1.5/htfuzzy/EndingsDB.cc:52: undefined reference
> to `ostream::operator<<(char const *)'

All of these should be in the libstdc++ library. However, the makefile
is trying to link these with gcc rather than g++ or c++, which is probably
a big part of the problem. I suspect something went wrong during the
run of ./configure, most likely because your C++ compiler and libraries
aren't installed where the configure program expected to find them.

...
> /sys2/gcc/lib/gcc-lib/i686-pc-linux-gnu/2.95.2/../../../../include/g++-3
> /iostream.h:106: undefined reference to `endl(ostream &)'
> /sys2/gcc/lib/gcc-lib/i686-pc-linux-gnu/2.95.2/../../../../include/g++-3
> /iostream.h:106: undefined reference to `cout'
> /sys2/gcc/lib/gcc-lib/i686-pc-linux-gnu/2.95.2/../../../../include/g++-3
> /iostream.h:106: undefined reference to `endl(ostream &)'

These error messages suggest that the C++ header files are not in the
standard location. The compiler found them OK, but things are messing
up and the linking stage. Is there a reason why you didn't just use
the egcs-c++ and libstdc++ RPM packages that came with Red Hat 6.2?
Those work fine with ht://Dig. I suspect that your setup as it is now
wouldn't work well with any software that needs C++.

-- 
Gilles R. Detillieux              E-mail: <grdetil@scrc.umanitoba.ca>
Spinal Cord Research Centre       WWW:    http://www.scrc.umanitoba.ca/~grdetil
Dept. Physiology, U. of Manitoba  Phone:  (204)789-3766
Winnipeg, MB  R3E 3J7  (Canada)   Fax:    (204)789-3930

------------------------------------ To unsubscribe from the htdig mailing list, send a message to htdig-unsubscribe@htdig.org You will receive a message to confirm this. List archives: <http://www.htdig.org/mail/menu.html> FAQ: <http://www.htdig.org/FAQ.html>



This archive was generated by hypermail 2b28 : Wed Dec 06 2000 - 12:40:21 PST