problem with strings and guiding-decls

Hartmut S. Loos Hartmut.Loos@neuroinformatik.ruhr-uni-bochum.de
Fri Jan 23 05:28:00 GMT 1998


Hi,

I have a problem with strings and the compiler option '-fguiding-decls'. I
tested it with a small programm I found in a previous mail. Without
'-fguiding-decls' it compiles fine, but with it it fails to get linked:

Undefined                       first referenced
 symbol                             in file
operator<<(ostream &, basic_string<char, string_char_traits<char> > const &)/var/tmp/cc0AqH3V1.o

------------- String.cc -------
#include <iostream.h>
#include <string>

int main()
{
  string s = "hello";
  cout << s << endl;
  return 0;
}

--------------------------------

> g++ String.cc -o String
> ./String
hello


> g++ -v -fguiding-decls String.cc -o String
Reading specs from /opt/gnu/lib/gcc-lib/sparc-sun-solaris2.6/egcs-2.90.23/specs
gcc version egcs-2.90.23 980102 (egcs-1.0.1 release)
 /opt/gnu/lib/gcc-lib/sparc-sun-solaris2.6/egcs-2.90.23/cpp -lang-c++ -v -undef -D__GNUC__=2 -D__GNUG__=2 -D__cplusplus -D__GNUC_MINOR__=90 -Dsparc -Dsun -Dunix -D__svr4__ -D__SVR4 -D__sparc__ -D__sun__ -D__unix__ -D__svr4__ -D__SVR4 -D__sparc -D__sun -D__unix -Asystem(unix) -Asystem(svr4) -D__EXCEPTIONS -D__GCC_NEW_VARARGS__ -Acpu(sparc) -Amachine(sparc) String.cc /var/tmp/cc0AqH3V.ii
GNU CPP version egcs-2.90.23 980102 (egcs-1.0.1 release) (sparc)
#include "..." search starts here:
#include <...> search starts here:
 /opt/gnu/include/g++
 /opt/gnu/lib/g++-include
 /opt/gnu/include
 /opt/gnu/sparc-sun-solaris2.6/include
 /opt/gnu/lib/gcc-lib/sparc-sun-solaris2.6/egcs-2.90.23/include
 /usr/include
End of search list.
 /opt/gnu/lib/gcc-lib/sparc-sun-solaris2.6/egcs-2.90.23/cc1plus /var/tmp/cc0AqH3V.ii -quiet -dumpbase String.cc -version -fguiding-decls -o /var/tmp/cc0AqH3V.s
GNU C++ version egcs-2.90.23 980102 (egcs-1.0.1 release) (sparc-sun-solaris2.6) compiled by GNU C version egcs-2.90.23 980102 (egcs-1.0.1 release).
 /usr/ccs/bin/as -V -Qy -s -o /var/tmp/cc0AqH3V1.o /var/tmp/cc0AqH3V.s
/usr/ccs/bin/as: WorkShop Compilers 4.X dev 18 Sep 1996
 /opt/gnu/lib/gcc-lib/sparc-sun-solaris2.6/egcs-2.90.23/ld -V -Y P,/usr/ccs/lib:/usr/lib -Qy -o String /opt/gnu/lib/gcc-lib/sparc-sun-solaris2.6/egcs-2.90.23/crt1.o /opt/gnu/lib/gcc-lib/sparc-sun-solaris2.6/egcs-2.90.23/crti.o /usr/ccs/lib/values-Xa.o /opt/gnu/lib/gcc-lib/sparc-sun-solaris2.6/egcs-2.90.23/crtbegin.o -L/opt/gnu/lib/gcc-lib/sparc-sun-solaris2.6/egcs-2.90.23 -L/opt/gnu/sparc-sun-solaris2.6/lib -L/usr/ccs/bin -L/usr/ccs/lib -L/opt/gnu/lib /var/tmp/cc0AqH3V1.o -lstdc++ -lm -lgcc -lc -lgcc /opt/gnu/lib/gcc-lib/sparc-sun-solaris2.6/egcs-2.90.23/crtend.o /opt/gnu/lib/gcc-lib/sparc-sun-solaris2.6/egcs-2.90.23/crtn.o
ld: Software Generation Utilities - Solaris/ELF (3.0)
Undefined                       first referenced
 symbol                             in file
operator<<(ostream &, basic_string<char, string_char_traits<char> > const &)/var/tmp/cc0AqH3V1.o
ld: fatal: Symbol referencing errors. No output written to String
collect2: ld returned 1 exit status


I need the flag in order to compile a large project together with 3rd party
software (LEDA). The code which needs '-fguiding-decls' looks like:

template <class T> class decl_compare_func { 
  friend inline int compare (const T&, const T&);
};

Do you have any ideas?

Bye,
  Hartmut.




More information about the Gcc-bugs mailing list