Article View: comp.windows.interviews
Article #660ld Error
From: Carlos Vidal
Date: Tue, 13 Oct 1992 09:40
Date: Tue, 13 Oct 1992 09:40
81 lines
2824 bytes
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!atocaviShow 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