clone 429600 -1 reassign -1 libtool retitle -1 -export-symbols doesn't work with C++ found -1 1.5.6-6 thanks
On Mon, Jun 18, 2007 at 10:46:52PM +0200, Aurelien Jarno wrote: > As we discussed shortly yesterday, there is a problem while building > dh_makeshlibs on armel. Here is the end of the build log: > dh_fixperms > dh_fixperms: Compatibility levels before 4 are deprecated. > perl ./debian/dh_makeshlibs -X lib/odbc/lib -a > dh_makeshlibs: Compatibility levels before 4 are deprecated. > Error: incorrect soname libodbcinstQ.so.1, missing symbol: Base > QGList::count() const > make: *** [binary-arch] Error 255 > The QGList::count() symbols comes from Qt 3. This function is defined as > inlined in the header file, but strangely it is inlined only on armel. Ultimately, this is a bug in either libtool or binutils. UnixODBC upstream already uses libtool's -export-symbols option for all of its libraries, but whereas for C libraries this option is mapped to -Wl,--version-script, for C++ libraries it's mapped to -Wl,-retain-symbols-file; and in spite of being documented in ld(1), -retain-symbols-file appears to have no effect on the resulting binary. I know of no reason why g++ couldn't use -Wl,--version-script the same as is used for C libraries; and indeed, the attached local patch to AC_LIBTOOL_LANG_CXX_CONFIG fixes this problem with the resulting libodbcinstQ. Cheers, -- Steve Langasek Give me a lever long enough and a Free OS Debian Developer to set it on, and I can move the world. [EMAIL PROTECTED] http://www.debian.org/
--- libtool-1.5.22.orig/libtool.m4 +++ libtool-1.5.22/libtool.m4 @@ -2821,8 +2821,13 @@ # archiving commands below assume that GNU ld is being used. if test "$with_gnu_ld" = yes; then _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}--retain-symbols-file $wl$export_symbols -o $lib' + if test $supports_anon_versioning = yes; then + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $output_objdir/$libname.ver~ + cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + $echo "local: *; };" >> $output_objdir/$libname.ver~ + $CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' + fi _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir' _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'