Return to BSD News archive
Xref: sserve comp.os.386bsd.questions:15122 gnu.g++.help:7266 gnu.gcc.help:10352 Newsgroups: comp.os.386bsd.questions,gnu.g++.help,gnu.gcc.help Path: sserve!newshost.anu.edu.au!harbinger.cc.monash.edu.au!yarrina.connect.com.au!news.mira.net.au!otis.apana.org.au!serval.net.wsu.edu!netnews.nwnet.net!oracle.pnl.gov!osi-east2.es.net!cronkite.nersc.gov!dancer.ca.sandia.gov!overload.lbl.gov!agate!howland.reston.ans.net!pipex!uunet!monoli!csoft!elvisti!store!office.elvisti.kiev.ua!alex From: alex@elvisti.kiev.ua (Alex A.Tatmaniants) Subject: Re: Problems compiling libg++-2.6.1 using gcc-2.6.[1,2] Followup-To: comp.os.386bsd.questions,gnu.g++.help,gnu.gcc.help X-Newsreader: TIN [version 1.2 PL2] Sender: usenet@store.elvisti.kiev.ua (USENET subsystem) Nntp-Posting-Host: office.elvisti.kiev.ua Organization: Electronni Visti InformAgency (ElVisti) Message-ID: <D0JIKu.8qF@store.elvisti.kiev.ua> References: <3bvi9e$gj4@cville-srv.wam.umd.edu> Date: Fri, 9 Dec 1994 11:00:27 GMT Lines: 145 David (cradle@wam.umd.edu) wrote: : 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 To prevent this warning you have to correct coresponding typedef-s in your _G_config.h to apropriate types for your system. : ../../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) To correct this your have to add Fix::Fix(unsigned int) constructor, it must be same as Fix::Fix(int) constructor. : 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 -- With best wishes -- Alex.