I have a rather nasty dependency problem with my pspell library.  

As I discussed earlier on the list to make Pspell work with out loading
modules at runtime I perform the following steps:

Stage 1)

1) First compile Pspell

2) Compile Pspell modules which depend on parts of pspell.

After stage one I have the following dependencies.

libpspell --> libpspell-modules

libpspell_aspell -> libaspell -> libpspell

libpspell_ispell -> libpspell

Stage 2)

Go back into the Pspell distribution and recreate the libpspell-module
library which links in the modules and sets up a array of function
pointers.

Then relink the pspell library which amounts to recreating the .la files.

I then have the following dependencies

libpspell --> libpspell-modules -> libpspell_aspell -> libaspell
    ^-----------------------------------------------------/
                                -> libpspell_ispell
    ^------------------------------------/                    

Now, the problem is that when I try to compile the example I get this:

[kevina@kevin examples]$ make example-cxx

/usr/local/gcc-2.95.2/bin/g++
-DPACKAGE=\"pspell\" -DVERSION=\".10\"  -I. -I. 
-I/home/kevina/devel/aspell/dev-install//include
-O -c -o example-cxx.o `test -f example-cxx.cc || echo './'`example-cxx.cc

/bin/sh ../libtool --mode=link /usr/local/gcc-2.95.2/bin/g++  -O   -o
example-cxx  example-cxx.o -L/home/kevina/devel/aspell/dev-install//lib
-lpspell 

mkdir .libs

/usr/local/gcc-2.95.2/bin/g++ -O -o example-cxx example-cxx.o
-L/home/kevina/devel/aspell/dev-install//lib
/home/kevina/devel/aspell/dev-install//lib/libpspell_aspell.a
/home/kevina/devel/aspell/dev-install//lib/libaspell.a
/home/kevina/devel/aspell/dev-install//lib/libpspell_ispell.a
/home/kevina/devel/aspell/dev-install//lib/libpspell-impl.a
/home/kevina/devel/aspell/dev-install//lib/libpspell.a
/home/kevina/devel/aspell/dev-install//lib/libpspell-modules.a

/home/kevina/devel/aspell/dev-install//lib/libpspell-modules.a(preload.o)(.rodata+0x4):
 undefined
reference to `libpspell_aspell_LTX_new_pspell_manager_class'
/home/kevina/devel/aspell/dev-install//lib/libpspell-modules.a(preload.o)(.rodata+0xc):
 undefined
reference to `libpspell_ispell_LTX_new_pspell_manager_class'
collect2: ld returned 1 exit status

I was able to get it link by specifying the libraries in the
following order which included listing libpspell twice:
  pspell pspell-modules pspell_aspell aspell pspell pspell_ispell

Does anyone know of a good solution to this problem?

Everything works fine when shared libraries are used, but then again when
shared libraries are used I don't need to perform stage two because I can
load the modules at run time.

-- 
Kevin Atkinson
[EMAIL PROTECTED]
http://metalab.unc.edu/kevina/

Reply via email to