| 2) The libGLU.so built from the GNUmakefile does not contain the C++
| symbols like __pure_virtual. This is Ok if you link it with a C++ app,
| but it causes an undefined symbol when linking with C programs or
| libraries. I could work around this problem by linking by hand the
| libGLU.so using g++ instead of ld:
| g++ -shared -Wl,-soname,libGLU.so libutil/*.o libtess/*.o etc.
|
| Fixing this would require big change the GNUmakefile and included files
| in the ogl-sample package. I didn't do it because I was afraid of
| breaking other things (in the build of other libraries than GLU).
there was a fixed checked in to the tree a while ago (April), but no
new tarball was created. I think a less intrusive change would be
be something like:
g++ -shared -Wl,-soname,libGLU.so -Wl,--whole-archive $(SRCLIBS)
-Wl,--no-whole-archive -o $@
I've made a more portable version of this (diffs below) and will check it
in later today (if no one objects)
david
|
| Anyway, I did all that with the downloadable tarball of ogl-sample
| (ogl-sample-20000126.tgz) because I was unable to get the CVS source
| tree version (apparently, there is a broken link on the web page).
|
| Any help or advices greatly appreciated.
Index: GNUmakefile
===================================================================
RCS file: /home/pub/cvs/projects/ogl-sample/main/gfx/lib/glu/GNUmakefile,v
retrieving revision 1.1
diff -r1.1 GNUmakefile
42c42
< TARGET = libGLU.so
---
> TARGET = libGLU.so.1
48,49c48,51
< # There should be a cleaner, version-independent way to do this
< LLDLIBS += -L/usr/lib/gcc-lib/i386-redhat-linux/egcs-2.91.66 -lstdc++
---
> # use g++ rather than ld
> LD=g++
> LDDSOFLAGS=-shared -Wl,-soname=$(TARGET) -Wl,--whole-archive
> LDFLAGS=-Wl,--no-whole-archive
|