Return to BSD News archive
Xref: sserve comp.os.386bsd.questions:14978 gnu.g++.help:7211 gnu.gcc.help:10258 Path: sserve!newshost.anu.edu.au!harbinger.cc.monash.edu.au!bunyip.cc.uq.oz.au!munnari.oz.au!spool.mu.edu!howland.reston.ans.net!europa.eng.gtefsd.com!news.umbc.edu!haven.umd.edu!cville-srv.wam.umd.edu!cradle From: cradle@wam.umd.edu (David) Newsgroups: comp.os.386bsd.questions,gnu.g++.help,gnu.gcc.help Subject: Problems compiling libg++-2.6.1 using gcc-2.6.[1,2] Date: 5 Dec 1994 17:22:54 GMT Organization: University of Maryland, College Park Lines: 130 Message-ID: <3bvi9e$gj4@cville-srv.wam.umd.edu> NNTP-Posting-Host: rac2.wam.umd.edu I'm having difficulty compiling the libg++-2.6.1 library on my system, an i386/40 running FreeBSD 1.1. I'll try to give a somewhat detailed explanation of the steps I've taken to install gcc and libg++. The end result, though, is that the compiler chokes when it gets to Fix.cc in the libg++ distribution. 1. I installed GNU make ver. 3.72.1, without difficulty 2. I installed gcc. I've had no luck with either version 2.6.1 or 2.6.2. (haven't tried 2.6.3 yet). a) I ran configure from the gcc-2.6.2 directory. The script correctly guessed the configuration to be i386-unknown-freebsd1.1 b) I compiled gcc-2.6.2 using the compiler that came packaged with FreeBSD 1.1, gcc version 2.4.5, with the command make LANGUAGES=c c) I made the stage2 compiler with the commands (executed from the gcc-2.6.2 directory): make stage1 make CC="stage1/xgcc -Bstage1/" CFLAGS="-g -O" d) I built the Objective C library: make objc-runtime CC="stage1/xgcc -Bstage1/" CFLAGS="-g -O" e) I installed the compiler: make install CC="stage1/xgcc -Bstage1/" CFLAGS="-g -O" f) I installed the Objective C library: make install-libobjc CC="stage1/xgcc -Bstage1/" CFLAGS="-g -O" 3. I attempted to install libg++-2.6.1 a) I copied /usr/bin/g++, /usr/bin/gcc, /usr/bin/cpp, the old versions of these programs, to /usr/bin/g++.old, etc, so that the 2.6.2 gcc was executed (in /usr/local/bin/gcc) by the makefiles. b) To enable libstc++ I uncommented the second definition of target_libs in configure.in c) In libg++-2.6.1 I executed configure, which again correctly guessed the system type. d) To make the library: make all "CC=gcc -O" "CXX=gcc -O" At this point, after compiling for quite some time and successfully creating some of the libraries, I got the following errors: gcc -O -c -g -O2 -fno-implicit-templates -nostdinc++ -I. -I../../libio -I. -I./../../libio -I./../src Fix.cc In file included from ../../libio/libio.h:32, from ../../libio/streambuf.h:34, from ../../libio/iostream.h:31, from ../../libio/stream.h:31, from ./Fix.h:11, from Fix.cc:25: ../../libio/_G_config.h:42: warning: ANSI C++ forbids typedef which does not specify a type ../../libio/_G_config.h:44: warning: ANSI C++ forbids typedef which does not specify a type Fix.cc: In function `static struct Fix::Rep * Fix::multiply(const struct Fix::Re p *, const struct Fix::Rep *, struct Fix::Rep * = 0)': Fix.cc:301: call of overloaded constructor `Fix(unsigned int)' is ambiguous ./Fix.h:232: candidates are: Fix::Fix(const Fix &) ./Fix.h:218: Fix::Fix(int) ./Fix.h:226: Fix::Fix(double) Fix.cc:301: in base initialization for class `Fix' Fix.cc:301: call of overloaded constructor `Fix(unsigned int)' is ambiguous ./Fix.h:232: candidates are: Fix::Fix(const Fix &) ./Fix.h:218: Fix::Fix(int) ./Fix.h:226: Fix::Fix(double) Fix.cc:301: in base initialization for class `Fix' Fix.cc: In function `static struct Fix::Rep * Fix::divide(const struct Fix::Rep *, const struct Fix::Rep *, struct Fix::Rep * = 0, struct Fix::Rep * = 0)': Fix.cc:371: call of overloaded constructor `Fix(unsigned int)' is ambiguous ./Fix.h:232: candidates are: Fix::Fix(const Fix &) ./Fix.h:218: Fix::Fix(int) ./Fix.h:226: Fix::Fix(double) Fix.cc:371: in base initialization for class `Fix' Fix.cc:386: call of overloaded constructor `Fix(unsigned int)' is ambiguous ./Fix.h:232: candidates are: Fix::Fix(const Fix &) ./Fix.h:218: Fix::Fix(int) ./Fix.h:226: Fix::Fix(double) Fix.cc:386: in base initialization for class `Fix' make[2]: *** [Fix.o] Error 1 make[2]: Leaving directory `/usr/tempor/libg++-2.6.1/libg++/src' make[1]: *** [in-src] Error 2 make[1]: Leaving directory `/usr/tempor/libg++-2.6.1/libg++' make: *** [all-libg++] Error 2 The ANSI C++ typedef warning comes up often, but doesn't stop the compiling. I suspect the problem may have something to do with gcc-2.6.2 not finding the proper header files. For instance, if I compile (using the newly compiled 2.6.2 version of g++) a simple program to print out "hello" using iostream.h, I get the following error: % g++ test2.cc In file included from /usr/include/g++/iostream.h:24, from test2.cc:4: /usr/include/g++/streambuf.h:187: `ios::operator void *(...)' must take `void' /usr/include/g++/streambuf.h:187: confused by earlier errors, bailing out But, oddly enough, if I copy the header files in /usr/include/g++ to the directory /usr/local/include/g++, and include this directory explicitly: % g++ -I /usr/local/include/g++ test2.cc then I have no problem. Note that these examples use the newly compiled gcc and g++. Any help would be greatly appreciated. I'm baffled. David Eisner cradle@wam.umd.edu University of Maryland at College Park