compilation error on CURRENT-20100118

Russ Allbery rra at stanford.edu
Wed Feb 3 07:05:55 UTC 2010


Katsuhiro Kondou <kondou at isc.org> writes:

> % cd /tmp/inn-CURRENT-20100118/storage
> % nm libstorage.a |grep OVstatall
> 00000010 C _OVstatall
>          U _OVstatall
>          U _OVstatall
> % nm libstorage.a | grep OVrealnow
>          U _OVrealnow
> 00000010 C _OVrealnow
>          U _OVrealnow

> % gcc -multiply_defined suppress -o tradindexed/tdx-util tradindexed/tdx-util.o /tmp/inn-CURRENT-20100118/storage/libstorage.a /tmp/inn-CURRENT-20100118/history/libinnhist.a /tmp/inn-CURRENT-20100118/lib/libinn.a         /usr/bin/ld: Undefined symbols:
> _OVstatall
> _OVrealnow
> collect2: ld returned 1 exit status

This is smelling like an ordering problem in the linker.  Note that there
are undefined references to the symbols in objects after the definition.
I supsect the linker is being literal about linking the objects in the
library in order.

This is the problem that ranlib generally fixes.  Is ranlib not being run
on the libstorage.a library for some reason?  The Makefile looks correct;
what is ranlib defined as in Makefile.global?

Does the problem go away if you configure with --enable-libtool?

-- 
Russ Allbery (rra at stanford.edu)             <http://www.eyrie.org/~eagle/>

    Please send questions to the list rather than mailing me directly.
     <http://www.eyrie.org/~eagle/faqs/questions.html> explains why.



More information about the inn-workers mailing list