tale@TURING.CS.RPI.EDU (David C Lawrence) (12/15/89)
I have a feeling this isn't a bug related to Sun4 SunOS 4.0, but just to me. (Sigh.) This relates to GCC 1.36, G++ 1.36.1 and libG++ 1.36.0. Several places in various installation documentation for GCC and G++ say to use GAS and GLD if you have them. Well, I do. Now how do I tell the compilers to use them? The documentation never says. This is what I see on output of gcc -v test.c -o test: gcc version 1.36 /usr/local/gnu/lib/gcc-cpp -v -undef -D__GNUC__ -Dsparc -Dsun -Dunix -D__sparc__ -D__sun__ -D__unix__ test.c /usr/tmp/cca02592.cpp GNU CPP version 1.36 /usr/local/gnu/lib/gcc-cc1 /usr/tmp/cca02592.cpp -quiet -dumpbase test.c -version -o /usr/tmp/cca02592.s GNU C version 1.36 (sparc) compiled by GNU C version 1.36. default target switches: -mfpu -mepilogue as -o test.o /usr/tmp/cca02592.s /usr/local/gnu/lib/gcc-ld -o test -e start -dc -dp /lib/crt0.o test.o /usr/local/gnu/lib/gcc-gnulib -lc "as" just sits out there all alone. I don't see anything in the Makefile to change, or in the couple of config files (even the ones that have "gas.h" in their name) that I checked. I looked at the strings in gcc.c and don't see, within the past forty-five minutes of trying to figure this out, how come /usr/local/gnu/lib/gcc- is getting prepended to cpp, cc1 and ld, but not to as. I don't really want it prepended to as, anyway, because I want it to use /usr/local/gnu/bin/gas. gnu ld from binutils is also in /usr/local/gnu/bin. Help? I've been looking at doing this for GCC right now in anticipation of doing it for G++. I built g++ but when I went to libg++ to make src/libg++.a it died right away on the very first file, builtin.cc, complaining that -fchar-charconst was an unrecognised flag. When I removed that flag from the src/Makefile (which bore the ominous comment "# the fchar-charconst flag is mandatory for some stream ops to work sensibly") it died for something else which I don't remember right now. Hang on ... $ make src/libg++.a (cd src; make GXX="g++" GXXFLAGS=" -I/src/gnu/libg++/g++-include -g -O -fstrength-reduce -felide-constructors -fschedule-insns -fdelayed-branch -fsave-memoized -pipe" GXXLDFLAGS="-L/src/gnu/libg++/src -lg++ -lm " LIBDIR="/usr/local/gnu/lib" SRCIDIR="/src/gnu/libg++/g++-include" CC="gcc" CFLAGS=" -I/usr/local/gnu/lib/gcc-include -I/usr/include -I/src/gnu/libg++/g++-include -g -O -fstrength-reduce -fdelayed-branch -pipe" RANLIB="ranlib" LDXX="ld" GXXCRT1="/usr/local/gnu/lib/crt1+.o" MAKE="make" prefix= "/usr/local/gnu" ) g++ -I/src/gnu/libg++/g++-include -g -O -fstrength-reduce -felide-constructors -fschedule-insns -fdelayed-branch -fsave-memoized -pipe -I.. -c builtin.cc In file included from /src/gnu/libg++/g++-include/sys/time.h:3, from builtin.cc: 316: /src/gnu/libg++/g++-include/time.h:60: warning: type declaration of timezone shadows previous declaration /src/gnu/libg++/g++-include/time.h:60: warning: `timezone' was declared `extern' and later `static' g++ -I/src/gnu/libg++/g++-include -g -O -fstrength-reduce -felide-constructors -fschedule-insns -fdelayed-branch -fsave-memoized -pipe -I.. -c File.cc g++ -I/src/gnu/libg++/g++-include -g -O -fstrength-reduce -felide-constructors -fschedule-insns -fdelayed-branch -fsave-memoized -pipe -I.. -c stream.cc stream.cc:28: argument list for `ostream' does not match any in class stream.cc: In method ostream::ostream (const char *, enum io_mode, enum access_mode): stream.cc:31: base class initializer specified, but no base class to initialize stream.cc: In method ostream::ostream (const char *, const char *): stream.cc:34: base class initializer specified, but no base class to initialize stream.cc: In method ostream::ostream (int, enum io_mode (= 1 )): stream.cc:37: base class initializer specified, but no base class to initialize stream.cc: In method ostream::ostream (struct _iobuf *): stream.cc:40: base class initializer specified, but no base class to initialize stream.cc: In method ostream::ostream (int, char *): stream.cc:43: base class initializer specified, but no base class to initialize stream.cc: At top level: stream.cc:48: argument list for `istream' does not match any in class stream.cc:53: argument list for `istream' does not match any in class stream.cc: In method istream::istream (const char *, enum io_mode, enum access_mode): stream.cc:53: base class initializer specified, but no base class to initialize stream.cc: At top level: stream.cc:59: argument list for `istream' does not match any in class stream.cc: In method istream::istream (const char *, const char *): stream.cc:59: base class initializer specified, but no base class to initialize stream.cc: At top level: stream.cc:65: argument list for `istream' does not match any in class stream.cc: In method istream::istream (int, enum io_mode (= 0 )): stream.cc:65: base class initializer specified, but no base class to initialize stream.cc: At top level: stream.cc:71: argument list for `istream' does not match any in class stream.cc: In method istream::istream (struct _iobuf *): stream.cc:71: base class initializer specified, but no base class to initialize stream.cc: At top level: stream.cc:77: argument list for `istream' does not match any in class stream.cc: In method istream::istream (int, char *): stream.cc:77: base class initializer specified, but no base class to initialize stream.cc: In method class ostream *istream::tie (class ostream *): stream.cc:86: redefinition of `class ostream *istream::tie (class ostream *)' /src/gnu/libg++/g++-include/stream.h:445: here is the previous declaration of `class ostream *istream::tie (class ostream *)' stream.cc: At top level: stream.cc:103: no `scan' member function declared in class stream.cc: In method class istream &istream::scan (const char *, ...): stream.cc:109: `stat' undeclared (first use this function) stream.cc:109: (Each undeclared identifier is reported only once stream.cc:109: for each function it appears in.) stream.cc:109: `fp' undeclared (first use this function) stream.cc: In method class istream &istream::operator >> (short int &): stream.cc:118: warning: implicit declaration of function `scan' stream.cc:118: ambiguous type conversion requested for constructor `istream' stream.cc: In method class istream &istream::operator >> (unsigned short int &): stream.cc:123: ambiguous type conversion requested for constructor `istream' stream.cc: In method class istream &istream::operator >> (int &): stream.cc:128: ambiguous type conversion requested for constructor `istream' stream.cc: In method class istream &istream::operator >> (unsigned int &): stream.cc:133: ambiguous type conversion requested for constructor `istream' stream.cc: In method class istream &istream::operator >> (long int &): stream.cc:138: ambiguous type conversion requested for constructor `istream' stream.cc: In method class istream &istream::operator >> (long unsigned int &): stream.cc:143: ambiguous type conversion requested for constructor `istream' stream.cc: In method class istream &istream::operator >> (float &): stream.cc:148: ambiguous type conversion requested for constructor `istream' stream.cc: In method class istream &istream::operator >> (double &): stream.cc:153: ambiguous type conversion requested for constructor `istream' stream.cc: In method class istream &istream::operator >> (char *): stream.cc:158: ambiguous type conversion requested for constructor `istream' stream.cc: In method class ostream &ostream::form (const char *, ...): stream.cc:168: `stat' undeclared (first use this function) stream.cc:168: `fp' undeclared (first use this function) stream.cc: In function void eatwhite (class istream &): stream.cc:216: redefinition of `void eatwhite (class istream &)' /src/gnu/libg++/g++-include/stream.h:460: here is the previous declaration of `void eatwhite (class istream &)' make[1]: *** [stream.o] Error 1 make: *** [src/libg++.a] Error 1 I know precious little about the C++ language at this point, but I'd like to get g++ working for our users on the sparcs, Sun3s, Balance 8000 and 21000, and DECstations. I know it can work on the Suns; the Balances worry me. :-/ One last thing: there is a comment in HINTS where Michael says he will fix the old problem I had with -nfp- configurations, where the LINK_SPEC was mixed up. Shouldn't this comment be removed now, just to keep the extra information to a minimum? Dave -- (setq mail '("tale@cs.rpi.edu" "tale@ai.mit.edu" "tale@rpitsmts.bitnet"))
amante%asgard@HUB.UCSB.EDU (12/16/89)
In <8912150603.AA03018@turing.cs.rpi.edu> David C Lawrence mentions: >> "as" just sits out there all alone. I don't see anything in the >> Makefile to change, or in the couple of config files (even the ones >> that have "gas.h" in their name) that I checked. I looked at the >> strings in gcc.c and don't see, within the past forty-five minutes of >> trying to figure this out, how come /usr/local/gnu/lib/gcc- is getting >> prepended to cpp, cc1 and ld, but not to as. I don't really want it >> prepended to as, anyway, because I want it to use /usr/local/gnu/bin/gas. >> gnu ld from binutils is also in /usr/local/gnu/bin. It's probably because you don't have the executable "gcc-as" in /usr/local/gnu/lib. One way out of this is to have a copy of your "as" and "ld" in the said directory and rename them as gcc-as and gcc-ld. Another possibility is to link (`ln') /usr/local/gnu/bin/gas to /usr/local/gnu/lib/gcc-as. Do likewise to "ld". (You can look at gcc.c for the #define STANDARD_EXEC_PREFIX to learn more about how the prefixes for executables are set for gcc/g++. In fact, you can modify this #define to suit your own needs.) Hope this helps ... Amante