libtool
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: undefined symbol woes


From: Patrick Welche
Subject: Re: undefined symbol woes
Date: Mon, 15 Dec 2003 19:38:18 +0000
User-agent: Mutt/1.5.4i

On Fri, Nov 28, 2003 at 09:40:36AM +0000, Gary V. Vaughan wrote:
> Patrick Welche wrote:
> | I was hoping to not create shared modules [[snip]]
> |
> |   libtool --mode=link gcc -module -export-dynamic -o mod_auth_basic.la
> mod_auth_basic.lo
> ~                            ^^^^^^^^^^^^^^^^^^^^^^^
> 
> - -module is for dlopening, -export-dynamic is for shared libs, but you want
> static modules? Are you trying to create preloaded modules?

I suppose so, I want to configure --enable-ssl and have mod_ssl linked into
httpd without creating a mod_ssl.so and needing to LoadModule mod_ssl.so.

> Take a look at cvs m4 for how to do this with cvs libtool.

(a bit tricky given I don't have autopoint, but after AUTOPOINT=echo, and
touch ABOUT-NLS
checking for shared library run path origin... gnulib/config/config.rpath: 
gnulib/config/config.rpath: No such file or directory
done
config.status: error: cannot find input file: po/Makefile.in.in
so I didn't see the actual Makefiles and can't check the contents of .la and
friends - that was m4 1.4q (1.249 2003/11/18 17:14:45))

It seems that the m4 modules are created with
-no-undefined -module
and the program linked with
-no-undefined -export-dynamic -dlpreopen force -dlpreopen modulename.la

Compare this to httpd where the modules are created with
-module -export-dynamic
and the program linked with
-export-dynamic

Trying just to link the httpd program with
-export-dynamic -dlpreopen force -dlpreopen modulename.la
gave
libtool: link: cannot -dlpreopen a convenience library: `modules/ssl/mod_ssl.la'

Trying to rebuild mod_ssl.la, changing the linking of the .lo's to make an .la
to use -no-undefined -module gave the same
rm -fr  .libs/mod_ssl.a .libs/mod_ssl.la
ar cru .libs/mod_ssl.a
ranlib .libs/mod_ssl.a
creating mod_ssl.la
(cd .libs && rm -f mod_ssl.la && ln -s ../mod_ssl.la mod_ssl.la)

So there unfortunately I can't compare a cvs-m4 .lo module to httpd-2.0's eg
# Name of the PIC object.
pic_object=none

# Name of the non-PIC object.
non_pic_object='mod_ssl.o'

even though as far as I can tell from cvs-m4's Makefile.am, the flags are
the same as in that last attempt.

> I think you're right that this could use some tidying.  If you want to 
> build a module that is always preloaded, you shouldn't have to create
> the dso.

Could you lead this novice by the nose please? How is all this supposed to
work?

Cheers,

Patrick




reply via email to

[Prev in Thread] Current Thread [Next in Thread]