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