🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: comp.windows.interviews
Article #660

ld Error

#660
From: Carlos Vidal
Date: Tue, 13 Oct 1992 09:40
81 lines
2824 bytes
Reference: 
	problem compiling ibuild with 3.1 beta3
	haber@cs.wisc.edu (Eben Merriam Haber)

> Hi there!
> 
> I got IV3.1 beta3 to compile ok, but ibuild doesn't want to link.  I get 
> the error:
> 
> ld:
> Undefined:
> ivBrushVarView::_ct(ivBrushVar*,ivColorVar*)
> ivPatternVarView::_ct(ivPatternVar*,ivColorVar*)
> ivFontVarView::_ct(ivFontVar*,unsigned int,const char*)
> ivModifStatusVarView::_ct(ivModifStatusVar*,unsigned int)
> ivCompNameVarView::_ct(ivCompNameVar*,unsigned int,unsigned int,const char*)
> ivGravityVarView::_ct(ivGravityVar*,unsigned int)
> ivMagnifVarView::_ct(ivMagnifVar*,unsigned int)
> make[1]: *** [a.out] Error 1
> make: *** [all] Error 1 (ignored)

It seems that the source stateviews.c (under lib/Unidraw) was not
compiled in the Unidraw library. All functions are constructors (_ct 
mangling).

You can check this with the 'nm' command. This command lists the symbol
table of libraries, .o files or executables. You can try these two commands:

under ibuild/$CPU execute:

	foreach i (*.o)
	? echo $i
	? nm $i | grep PatternVarView
	? end

The output is something like that:

	...
	ibdialogs.o
	ibed.o
		U __ct__16ivPatternVarViewFP12ivPatternVarP10ivColorVar
	ibeditor.o

The horrible name is the mangled function name (is compiler dependent). 
The 'U' at the beginning of the line means undefined, and this is what 
the loader can not find.

Now change directory to src/lib/Unidraw/$CPU and execute the command:

	nm stateviews.o | grep PatternVarView


The output should look like:

000026e0 T Init__16ivPatternVarViewFv
000025b8 T Stale__16ivPatternVarViewFv
00002370 T __ct__16ivPatternVarViewFP12ivPatternVarP10ivColorVar
000024ec T __dt__16ivPatternVarViewFv
00003248 D __vtbl__16ivPatternVarView

The T means that a Text exists (executable code in other words). If
you dont have that, it means that the module containing the class
implementation had some problem to be compiled.

The library should also have these functions. Check it with:

	nm libUnidraw.a | grep PatternVarView


If you have it, check that the names are exactly the same as the ones
requested in ibuild (the iv prefix may be is iv2_6). 

If they are the same, check that the Unidraw library exists in 
ibuild's Makefile (in the macro LDLIBUNIDRAW).

If you are not in these cases, sorry, I do not know what happens.

Good luck,

Carlos Vidal
atocavi@ato.abb.se
Technical Details
Message-ID: <9210130940.AA24467@bach.ato.abb.se>
Path: arc1-ca.pugleaf.net!sparky!uunet!stanford.edu!ato.abb.se!atocavi

Show Full Headers
Complete Article Headers
Newsgroups: comp.windows.interviews
Path: arc1-ca.pugleaf.net!sparky!uunet!stanford.edu!ato.abb.se!atocavi
From: atocavi@ato.abb.se (Carlos Vidal)
Subject: ld Error
Message-ID: <9210130940.AA24467@bach.ato.abb.se>
Sender: news@shelby.stanford.edu (USENET News System)
Organization: Internet-USENET Gateway at Stanford University
Date: Tue, 13 Oct 1992 09:40:07 GMT
Lines: 82