From: Olivier M. <Oli...@cy...> - 2000-06-30 15:32:23
|
Brian Paul wrote: > > Olivier Michel wrote: > > > > Thanks to Brian, I checked out and build the lastest CVS version. > > It turns out that the GLU library is now properly built so that C++ > > symbols are now defined (i.e., I could like libGLU.so with simple C > > programs). > > > > However, except for the problems with the glu.h include file which are > > not yet fixed in the CVS, I discovered another problem that didn't exist > > in the tarball version: > > > > libGLU.so needs a couple of symbols that belongs to SGI libGL.so (I > > guess) and are not present in Mesa libGL.so. These symbols are: > > > > __glNURBSErrorString and __glTessErrorString > > > > They are used at the end of main/gfx/lib/glu/libutil/error.c and defined > > as external in gluint.h (in the same directory as error.c) > > > > I guess GLU should not assume that such symbols are defined in libGL.so > > and I think that the corresponding functions should be moved from SGI GL > > into SGI GLU -> __gluNURBSErrorString and __gluTessErrorString > > > > I had to comment out these two calls to get SGI libGLU.so link with Mesa > > libGL.so > > Have you determined exactly how/why these two functions are used? > > libGLU shouldn't use any internal libGL functions, in principle. > But in practice, I'm not too surprised by this. In the worst case, > I could add those funcs to Mesa (but I'd rather not). Ok, I found the problem: Despite their strange names, I was wrong saying that these symbols were belonging to core GL. I finally found them in glu/libutil/glue.c. They were not found at run time because the GLU library is build without the -fpic option. I recompiled the glue.c and error.c files by hand simply adding the -fpic option to gcc and it worked fine. Symbols are not anymore missing at runtime. However, since I have no write access to ogl-sample CVS, I cannot commit anything to fix this. I guess this is pretty simple to fix (just add -fpic for Linux compilation in the main/root/usr/include/make/commondefs which is included by all GNUmakefile). Anyone with write access to CVS could fix this ? Thanks, -Olivier |