On Fri, Oct 06, 2006 at 06:29:47PM +0200, Kurt Roeckx wrote: > On Fri, Oct 06, 2006 at 04:03:42PM +0200, Carlo Wood wrote: > > > > The problem here is that -ldl appears before > > /usr/local/install/4.1.2-20060901/lib/libcwd.so > > Where does that -ldl come from?
That is detailed explained in the my first post?? Repeat: ../libltdl/libltdlc.la pulls it in. The first post contains a full copy of this file. > Does only libcwd need the -ldl, or does something else need -ldl too? See original post/above: ../libltdl/libltdlc.la > What happens if the -ldl isn't on the command line at all? I gave the command line in my first post, there is no -ldl on the command line! :/ Repeat: /bin/sh ../libtool --tag=CXX --mode=link g++ -g -DCWDEBUG -I/usr/local/install/4.1.2-20060901/include -W -Wall -Wundef -DDEBUG -I"/usr/include/boost-1_33_1" -export-dynamic -o edragon -export-dynamic -no-undefined -Wl,--whole-archive,utils/.libs/libutils.a,--no-whole-archive edragon-Application.o edragon-GUI_interface.o edragon-IniFile.o edragon-PathList.o edragon-PluginFile.o edragon-PluginsManager.o edragon-RCFile.o edragon-Runtime.o edragon-XMLFile.o edragon-testsuite_hooks.o ../libltdl/libltdlc.la -L/usr/local/install/4.1.2-20060901/lib -lcwd -lboost_filesystem-gcc-d-1_33_1 -L/usr/local/install/4.1.2-20060901/lib -lcairo -L/usr/local/install/4.1.2-20060901/lib -lglib-2.0 -L/usr/local/install/4.1.2-20060901/lib -lxmlwrapp -lxsltwrapp -lxslt -lxml2 -L/usr/local/install/4.1.2-20060901/lib -lcw (All of that is on one line). There is no -ldl there. > Can you show the output the objdump -p file |grep NEEDED for > libcwd and the application? And the output from ldd file for > the application? I don't see how NEEDED is relevant here. The only thing that is relevant are the .la files involved (which were included in my first post). But ok here is the requested info: ~/projects/edragon/edragon-objdir-bugreport/src>ldd edragon linux-gate.so.1 => (0xffffe000) libdl.so.2 => /lib/tls/libdl.so.2 (0xa7f68000) libcwd.so.0 => /usr/local/install/4.1.2-20060901/lib/libcwd.so.0 (0xa7eb4000) libboost_filesystem-gcc-d-1_33_1.so.1.33.1 => /usr/lib/libboost_filesystem-gcc-d-1_33_1.so.1.33.1 (0xa7e9f000) libcairo.so.2 => /usr/local/install/4.1.2-20060901/lib/libcairo.so.2 (0xa7e3f000) libglib-2.0.so.0 => /usr/local/install/4.1.2-20060901/lib/libglib-2.0.so.0 (0xa7dae000) libxmlwrapp.so.0 => /usr/local/install/4.1.2-20060901/lib/libxmlwrapp.so.0 (0xa7d8c000) libxsltwrapp.so.0 => /usr/local/install/4.1.2-20060901/lib/libxsltwrapp.so.0 (0xa7d83000) libxslt.so.1 => /usr/lib/libxslt.so.1 (0xa7d51000) libxml2.so.2 => /usr/lib/libxml2.so.2 (0xa7c38000) libcw.so.0 => /usr/local/install/4.1.2-20060901/lib/libcw.so.0 (0xa7be8000) libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0xa7b09000) libm.so.6 => /lib/tls/libm.so.6 (0xa7ae4000) libgcc_s.so.1 => /lib/libgcc_s.so.1 (0xa7ad8000) libc.so.6 => /lib/tls/libc.so.6 (0xa79a6000) /lib/ld-linux.so.2 (0xa7f7e000) libSM.so.6 => /usr/lib/libSM.so.6 (0xa799d000) libICE.so.6 => /usr/lib/libICE.so.6 (0xa7985000) libXrender.so.1 => /usr/lib/libXrender.so.1 (0xa797d000) libX11.so.6 => /usr/lib/libX11.so.6 (0xa78b6000) libpng12.so.0 => /usr/lib/libpng12.so.0 (0xa7891000) libfreetype.so.6 => /usr/lib/libfreetype.so.6 (0xa7827000) libz.so.1 => /usr/lib/libz.so.1 (0xa7813000) libfontconfig.so.1 => /usr/lib/libfontconfig.so.1 (0xa77e9000) libexslt.so.0 => /usr/lib/libexslt.so.0 (0xa77d8000) libXau.so.6 => /usr/lib/libXau.so.6 (0xa77d4000) libXdmcp.so.6 => /usr/lib/libXdmcp.so.6 (0xa77cf000) libexpat.so.1 => /usr/lib/libexpat.so.1 (0xa77b0000) libgcrypt.so.11 => /usr/lib/libgcrypt.so.11 (0xa775f000) libgpg-error.so.0 => /usr/lib/libgpg-error.so.0 (0xa775b000) libnsl.so.1 => /lib/tls/libnsl.so.1 (0xa7744000) ~/projects/edragon/edragon-objdir-bugreport/src>objdump -p /usr/local/install/4.1.2-20060901/lib/libcwd.so.0 | grep NEEDED NEEDED libdl.so.2 NEEDED libstdc++.so.6 NEEDED libm.so.6 NEEDED libc.so.6 NEEDED libgcc_s.so.1 ~/projects/edragon/edragon-objdir-bugreport/src>objdump -p ./edragon | grep NEEDED NEEDED libdl.so.2 NEEDED libcwd.so.0 NEEDED libboost_filesystem-gcc-d-1_33_1.so.1.33.1 NEEDED libcairo.so.2 NEEDED libglib-2.0.so.0 NEEDED libxmlwrapp.so.0 NEEDED libxsltwrapp.so.0 NEEDED libxslt.so.1 NEEDED libxml2.so.2 NEEDED libcw.so.0 NEEDED libstdc++.so.6 NEEDED libm.so.6 NEEDED libgcc_s.so.1 NEEDED libc.so.6 ~/projects/edragon/edragon-objdir-bugreport/src>./edragon COREDUMP: libcwd:cwbfd::ST_init: dlsym(RTLD_NEXT, "dlopen") returns NULL; please check that you didn't specify -ldl before (left of) -lcwd while linking. Obviously "NEEDED libdl.so.2" appears before "NEEDED libcwd.so.0", because the g++ command generated by libtool erroneously puts -ldl in front of libcwd. Repeat of the g++ command generatd by libtool: g++ -g -DCWDEBUG -I/usr/local/install/4.1.2-20060901/include -W -Wall -Wundef -DDEBUG -I/usr/include/boost-1_33_1 -o edragon -Wl,--whole-archive -Wl,utils/.libs/libutils.a -Wl,--no-whole-archive edragon-Application.o edragon-GUI_interface.o edragon-IniFile.o edragon-PathList.o edragon-PluginFile.o edragon-PluginsManager.o edragon-RCFile.o edragon-Runtime.o edragon-XMLFile.o edragon-testsuite_hooks.o -Wl,--export-dynamic ../libltdl/.libs/libltdlc.a -ldl -L/usr/local/install/4.1.2-20060901/lib /usr/local/install/4.1.2-20060901/lib/libcwd.so -lboost_filesystem-gcc-d-1_33_1 /usr/local/install/4.1.2-20060901/lib/libcairo.so /usr/local/install/4.1.2-20060901/lib/libglib-2.0.so /usr/local/install/4.1.2-20060901/lib/libxmlwrapp.so /usr/local/install/4.1.2-20060901/lib/libxsltwrapp.so /usr/lib/libxslt.so /usr/lib/libxml2.so /usr/local/install/4.1.2-20060901/lib/libcw.so -Wl,--rpath -Wl,/usr/local/install/4.1.2-20060901/lib -Wl,--rpath -Wl,/usr/local/install/4.1.2-20060901/lib If I put the -ldl correctly AFTER the "/usr/local/install/4.1.2-20060901/lib/libcwd.so", like so: ~/projects/edragon/edragon-objdir-bugreport/src>g++ -g -DCWDEBUG -I/usr/local/install/4.1.2-20060901/include -W -Wall -Wundef -DDEBUG -I/usr/include/boost-1_33_1 -o edragon -Wl,--whole-archive -Wl,utils/.libs/libutils.a -Wl,--no-whole-archive edragon-Application.o edragon-GUI_interface.o edragon-IniFile.o edragon-PathList.o edragon-PluginFile.o edragon-PluginsManager.o edragon-RCFile.o edragon-Runtime.o edragon-XMLFile.o edragon-testsuite_hooks.o -Wl,--export-dynamic ../libltdl/.libs/libltdlc.a -L/usr/local/install/4.1.2-20060901/lib /usr/local/install/4.1.2-20060901/lib/libcwd.so -ldl -lboost_filesystem-gcc-d-1_33_1 /usr/local/install/4.1.2-20060901/lib/libcairo.so /usr/local/install/4.1.2-20060901/lib/libglib-2.0.so /usr/local/install/4.1.2-20060901/lib/libxmlwrapp.so /usr/local/install/4.1.2-20060901/lib/libxsltwrapp.so /usr/lib/libxslt.so /usr/lib/libxml2.so /usr/local/install/4.1.2-20060901/lib/libcw.so -Wl,--rpath -Wl,/usr/local/install/4.1.2-20060901/lib -Wl,--rpath -Wl,/usr/local/install/4.1.2-20060901/lib Then the result of the grep, obviously, becomes: ~/projects/edragon/edragon-objdir-bugreport/src>objdump -p ./edragon | grep NEEDED NEEDED libcwd.so.0 NEEDED libdl.so.2 NEEDED libboost_filesystem-gcc-d-1_33_1.so.1.33.1 NEEDED libcairo.so.2 NEEDED libglib-2.0.so.0 NEEDED libxmlwrapp.so.0 NEEDED libxsltwrapp.so.0 NEEDED libxslt.so.1 NEEDED libxml2.so.2 NEEDED libcw.so.0 NEEDED libstdc++.so.6 NEEDED libm.so.6 NEEDED libgcc_s.so.1 NEEDED libc.so.6 Not passing -ldl to g++ doesn't seem like a serious option to me. -- Carlo Wood <[EMAIL PROTECTED]>