[gnu.g++.bug] Cannot find crt0+.o

gordon%stats.ucl.ac.uk@NSFNET-RELAY.AC.UK (Gordon Joly) (05/22/89)

mdt>    karl:/stats/staff/karl/gordon/BAIES/WOOD[14] make
mdt>    g++ -v
mdt>    g++ version 1.35.0
mdt>    g++ wood.o table.o oper.o -o wood -g -lg++ -lm -v
mdt>    g++ version 1.35.0
mdt>     /stats/staff/karl/lib/gcc-ld++ -o wood -C -dc -dp -Bstatic /lib/crt0.o
mdt> 		  /lib/Mcrt1.o wood.o table.o oper.o -lg++ /stats/staff/karl/lib/gcc-gnulib -lg -lc
mdt>    /stats/staff/karl/lib/gcc-ld++: text symbol `___DTOR_LIST__' redefined as set vector.  Files:
mdt>     C++.hacksa12670
mdt>     /stats/staff/karl/lib/libg++.a(stream.o)
mdt>    /stats/staff/karl/lib/gcc-ld++: text symbol `___CTOR_LIST__' redefined as set vector.  Files:
mdt>     C++.hacksa12670
mdt>     /stats/staff/karl/lib/libg++.a(stream.o)
mdt>    /lib/crt0.o: Undefined symbol __DYNAMIC referenced from text
mdt>       
mdt> This indicates two problems.  First, you have not recompiled all your
mdt> files with GNU C++ 1.35.0.  If you had, there would be no stabs trying
mdt> to make __DTOR_LIST__ a set vector.
mdt> 
mdt> Secondly, your tm.h file is getting wrong information.  If it is
mdt> tm-sun3.h, you need tm-sun3+.h.  If it is tm-xxx.h, where tm-xxx.h
mdt> looks like this:
mdt> 
mdt> 	/* GNU Blurb.  */
mdt> 
mdt> 	#define SITE_SPECIFIC_OPTIONS (1 << lose)
mdt> 
mdt> 	#include "tm-sun3.h"
mdt> 
mdt> then you have the problem that the config script is not smart enough
mdt> to change the include to include tm-sun3+.h, nor to make tm-sun3+.h
mdt> for you in the first place.  Make it so that tm-xxx.h winds up with
mdt> the right STARTFILE_SPEC (i.e., it references crt0+.o instead of
mdt> crt0.o).
mdt> 
mdt> Michael

I solved the first by installing libg++.a 1.35.0 compiled with
GNU C++ 1.35.0, so that [...]

karl:/stats/staff/karl/gordon/BAIES/WOOD[7] make wood
g++ -v
g++ version 1.35.0
g++ wood.o table.o oper.o -o wood -g -v 
g++ version 1.35.0
 /stats/staff/karl/lib/gcc-ld++ -o wood -C -dc -dp -Bstatic /lib/crt0.o /lib/Mcrt1.o wood.o table.o oper.o -lg++ /stats/staff/karl/lib/gcc-gnulib -lg -lc
/lib/crt0.o: Undefined symbol __DYNAMIC referenced from text

make: *** Error 1
karl:/stats/staff/karl/gordon/BAIES/WOOD[8] 

[...] only the /lib/crt0.o (should be /stats/staff/karl/lib/crt0+.o) problem
remains. I trace the error thru g++:find_file with gdb, but this was not
very revealing. In fact I did ``cp ./config/tm-sun3+.h tm.h'', anc changed
two lines in the Makefile, namely
CONFIG_H = config.h tm.h
# CONFIG_H

Next; try a complete rm *.o ; make [...]
Gordon.