_lt_libltdl_LTX_preloaded_symbols in consistence.
Hi, On MacOS X, 10.5.2, intel machine, the symbol _lt_libltdl_LTX_preloaded_symbols libraries (from the generated file libltdlS.o) is inconsistent with the symbol defined in ltdl.h, where the symbol is declared as _lt__PROGRAM__LTX_preloaded_symbols. This causes link time error. I fixed this problem by changing the name in the ltdl.h file to match the symbol in the libraries. Do you guys have a long term fix for that? steve ___ http://lists.gnu.org/mailman/listinfo/libtool
Re: _lt_libltdl_LTX_preloaded_symbols in consistence.
Here is the message: | I was building guile-1.8.4 on my macbook pro, and I found the linking | problem. Here is the configure command I typed: | ./configure --prefix=/usr --with-threads --enable-shared | | and here is the make.log tail: | | (cd .libs && gcc -g -O2 -c -fno-builtin "guileS.c") | rm -f .libs/guileS.c .libs/guile.nm .libs/guile.nmS .libs/guile.nmT | gcc -D_THREAD_SAFE -g -O2 -Wall -Wmissing-prototypes -Werror | .libs/guileS.o -D_THREAD_SAFE -o .libs/guile guile-guile.o | ./.libs/libguile.dylib -lintl -lgmp -lm -lltdl | Undefined symbols: | "_lt__PROGRAM__LTX_preloaded_symbols", referenced from: | _lt__PROGRAM__LTX_preloaded_symbols$non_lazy_ptr in guile- guile.o | ld: symbol(s) not found | collect2: ld returned 1 exit status | make[3]: *** [guile] Error 1 | make[2]: *** [all] Error 2 | make[1]: *** [all-recursive] Error 1 | make: *** [all] Error 2 | I fixed it by changing the macro in ltdl.h from _lt__PROGRAM__LTX_preloaded_symbols to _lt_libltdl_LTX_preloaded_symbols. I found this symbol using nm on the libltdl.a and the shared library. steve On Apr 12, 2008, at 9:53 PM, Peter O'Gorman wrote: Steven Wu wrote: Hi, On MacOS X, 10.5.2, intel machine, the symbol _lt_libltdl_LTX_preloaded_symbols libraries (from the generated file libltdlS.o) is inconsistent with the symbol defined in ltdl.h, where the symbol is declared as _lt__PROGRAM__LTX_preloaded_symbols. This causes link time error. I fixed this problem by changing the name in the ltdl.h file to match the symbol in the libraries. When linking libltdl? What are the errors that you saw? And what changes did you have to make? Peter -- Peter O'Gorman http://pogma.com ___ http://lists.gnu.org/mailman/listinfo/libtool
Re: _lt_libltdl_LTX_preloaded_symbols in consistence.
It was _lt__PROGRAM__LTX_preloaded_symbols, however, in libltdl.a, it was _lt_libltdl_LTX_preloaded_symbols. That is why I changed the name in ltdl.h. here: $ nm libltdlS.o U _dlopen_LTX_get_vtable 02c0 S _lt_libltdl_LTX_preloaded_symbols and nm libltdl.a ... nm libltdlS.o U _dlopen_LTX_get_vtable 02c0 S _lt_libltdl_LTX_preloaded_symbols ... That symbol name was inconsistent with ltdl.h. When I tried to link with with -lltdl, and I got the following error. I hence got around the problem by changing the macro definition in ltdl.h to match the symbol in the ltdl libraries. Hopefully we can find the real solution to this problem. steve On Apr 13, 2008, at 1:14 AM, Ralf Wildenhues wrote: * Steven Wu wrote on Sun, Apr 13, 2008 at 07:34:13AM CEST: | | (cd .libs && gcc -g -O2 -c -fno-builtin "guileS.c") | rm -f .libs/guileS.c .libs/guile.nm .libs/guile.nmS .libs/guile.nmT | gcc -D_THREAD_SAFE -g -O2 -Wall -Wmissing-prototypes -Werror | .libs/guileS.o -D_THREAD_SAFE -o .libs/guile guile-guile.o | ./.libs/libguile.dylib -lintl -lgmp -lm -lltdl | Undefined symbols: | "_lt__PROGRAM__LTX_preloaded_symbols", referenced from: | _lt__PROGRAM__LTX_preloaded_symbols$non_lazy_ptr in guile- guile.o Can you show the output of nm -p .libs/guileS.o please? It should define _lt__PROGRAM__LTX_preloaded_symbols. Thanks, Ralf ___ http://lists.gnu.org/mailman/listinfo/libtool
Re: _lt_libltdl_LTX_preloaded_symbols in consistence.
thanks. The Guile team is working on Libtool 2.2.x migration, and I think it will take a while before it got fully integrated. thanks. steve On Apr 16, 2008, at 3:17 PM, Ralf Wildenhues wrote: Steven, please keep the libtool list in CC:, thanks. * Steven Wu wrote on Mon, Apr 14, 2008 at 04:04:39AM CEST: On Apr 13, 2008, at 10:12 AM, Ralf Wildenhues wrote: [ re-adding libtool list in Cc: ] * Steven Wu wrote on Sun, Apr 13, 2008 at 06:43:59PM CEST: In libguile/.libs/guileS.o $ nm -p libguile/.libs/guileS.o 0224 S _lt_preloaded_symbols this doesn't seem to be correct. Ah ok, thanks. That means that linking of guile is done by libtool 1.5.x, not 2.2.x. We may need to document this better: using libltdl from 2.2.x requires libtool 2.2.x to link against. So how can I ensure that the libtool 2.2.x is being used? Since I am on MacOS X, and the darwin's libtool is shipped with the OS. I installed the latest release of gnu libtool, and I named the executable to be glibtool. What should I do to build guile with the right stuffs? As a hack, you can try make LIBTOOL=glibtool but to update properly, you need to replace the libtool.m4 and other macro files in the package (the Libtool macros may have been copied into the acinclude.m4 or aclocal.m4 files), and replace ltmain.sh with the 2.2.2 version, and then regenerate configure. Typically, libtoolize does part of this, and often, autoreconf --force can do all of it for you. If the package has a custom ./bootstrap or ./autogen.sh, then that is the way to go. Cheers, Ralf ___ http://lists.gnu.org/mailman/listinfo/libtool