[Bug libstdc++/56779] New: libstdc++.so: undefined reference to `libintl_textdomain'

treeve at sourcemage dot org gcc-bugzilla@gcc.gnu.org
Fri Mar 29 12:55:00 GMT 2013


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56779

             Bug #: 56779
           Summary: libstdc++.so: undefined reference to
                    `libintl_textdomain'
    Classification: Unclassified
           Product: gcc
           Version: 4.8.0
            Status: UNCONFIRMED
          Severity: major
          Priority: P3
         Component: libstdc++
        AssignedTo: unassigned@gcc.gnu.org
        ReportedBy: treeve@sourcemage.org


Created attachment 29749
  --> http://gcc.gnu.org/bugzilla/attachment.cgi?id=29749
full compile log for gcc-4.8.0

libstdc++.so has references to libintl_textdomain, but intl is not listed as a
needed library

$ readelf -d
/usr/lib/gcc/x86_64-pc-linux-gnu/4.8.0/../../../../lib/libstdc++.so |grep
NEEDED
 0x0000000000000001 (NEEDED)             Shared library: [libm.so.6]
 0x0000000000000001 (NEEDED)             Shared library: [libc.so.6]
 0x0000000000000001 (NEEDED)             Shared library: [ld-linux-x86-64.so.2]
 0x0000000000000001 (NEEDED)             Shared library: [libgcc_s.so.1]


$ readelf -s
/usr/lib/gcc/x86_64-pc-linux-gnu/4.8.0/../../../../lib/libstdc++.so |grep
libintl
   252: 0000000000000000     0 NOTYPE  GLOBAL DEFAULT  UND libintl_gettext
  1825: 0000000000000000     0 NOTYPE  GLOBAL DEFAULT  UND libintl_textdomain
  2592: 0000000000000000     0 NOTYPE  GLOBAL DEFAULT  UND
libintl_bindtextdomain
   961: 0000000000000000     0 NOTYPE  GLOBAL DEFAULT  UND libintl_gettext
  2534: 0000000000000000     0 NOTYPE  GLOBAL DEFAULT  UND libintl_textdomain
  3301: 0000000000000000     0 NOTYPE  GLOBAL DEFAULT  UND
libintl_bindtextdomain


This causes major problems when trying to link a C++ program
eg:

g++  -march=native -mtune=native -m64 -pipe -ffast-math -funroll-loops -O3 -s
-Wl,--as-needed -lpthread -lintl -pthread  -Wl,-rpath,'$ORIGIN/../lib'
-Wl,-rpath,'$ORIGIN/../intl' -Wl,--version-script,empty.vers
/var/git/x86_64/firebird3/temp/Release/gpre/hsh.o
/var/git/x86_64/firebird3/temp/Release/gpre/jrdmet.o
/var/git/x86_64/firebird3/temp/Release/gpre/cme.o
/var/git/x86_64/firebird3/temp/Release/gpre/par.o
/var/git/x86_64/firebird3/temp/Release/gpre/sqe.o
/var/git/x86_64/firebird3/temp/Release/gpre/msc.o
/var/git/x86_64/firebird3/temp/Release/gpre/c_cxx.o
/var/git/x86_64/firebird3/temp/Release/gpre/exp.o
/var/git/x86_64/firebird3/temp/Release/gpre/movg.o
/var/git/x86_64/firebird3/temp/Release/gpre/pat.o
/var/git/x86_64/firebird3/temp/Release/gpre/cmp.o
/var/git/x86_64/firebird3/temp/Release/gpre/gpre.o
/var/git/x86_64/firebird3/temp/Release/gpre/sql.o
/var/git/x86_64/firebird3/temp/Release/gpre/int_cxx.o
/var/git/x86_64/firebird3/temp/Release/gpre/cmd.o
/var/git/x86_64/firebird3/temp/Release/gpre/boot/gpre_meta_boot.o
/var/git/x86_64/firebird3/temp/Release/yvalve/gds.o
/var/git/x86_64/firebird3/temp/Release/common.a -o
/var/git/x86_64/firebird3/gen/Release/firebird/bin/gpre_boot
-L/var/git/x86_64/firebird3/gen/Release/firebird/lib -lpthread -latomic_ops -lm
-ldl  -lcurses
/usr/lib/gcc/x86_64-pc-linux-gnu/4.8.0/../../../../lib/libstdc++.so: undefined
reference to `libintl_gettext'
/usr/lib/gcc/x86_64-pc-linux-gnu/4.8.0/../../../../lib/libstdc++.so: undefined
reference to `libintl_textdomain'
/usr/lib/gcc/x86_64-pc-linux-gnu/4.8.0/../../../../lib/libstdc++.so: undefined
reference to `libintl_bindtextdomain'
collect2: error: ld returned 1 exit status
gettext

In some cases this can be solved by setting LDFLAGS="-lintl", but in other
cases the makefiles ignore this setting and fail.

gcc was configure with --disable-nls, but gettext-0.18.2 was on the system,and 
installed 
/usr/lib/libasprintf.a
/usr/lib/libasprintf.la
/usr/lib/libasprintf.so
/usr/lib/libasprintf.so.0
/usr/lib/libasprintf.so.0.0.0
/usr/lib/libgettextlib-0.18.2.so
/usr/lib/libgettextlib.la
/usr/lib/libgettextlib.so
/usr/lib/libgettextpo.a
/usr/lib/libgettextpo.la
/usr/lib/libgettextpo.so
/usr/lib/libgettextpo.so.0
/usr/lib/libgettextpo.so.0.5.2
/usr/lib/libgettextsrc-0.18.2.so
/usr/lib/libgettextsrc.la
/usr/lib/libgettextsrc.so
/usr/lib/libintl.a
/usr/lib/libintl.la
/usr/lib/libintl.so
/usr/lib/libintl.so.8
/usr/lib/libintl.so.8.1.2



The output from configure includes the following:
checking whether NLS is requested... no
checking build system type... checking for msgfmt... x86_64-pc-linux-gnu
checking for x86_64-pc-linux-gnu-gcc... gcc
x86_64-pc-linux-gnu
checking host system type... x86_64-pc-linux-gnu
checking target system type... /usr/bin/msgfmt
checking for gmsgfmt... x86_64-pc-linux-gnu
checking target system type... /usr/bin/msgfmt
checking for xgettext... x86_64-pc-linux-gnu
checking for x86_64-pc-linux-gnu-ar... ar
checking for x86_64-pc-linux-gnu-ranlib... ranlib
checking for x86_64-pc-linux-gnu-gcc... gcc
x86_64-pc-linux-gnu
checking for x86_64-pc-linux-gnu-gcc... gcc
checking for a BSD-compatible install... /bin/install -c
checking whether build environment is sane... /usr/bin/xgettext
checking for C compiler default output file name... checking for msgmerge...
/usr/bin/msgmerge

....

checking whether NLS is requested... no
checking whether to use NLS... no

gcc was build using:
gcc-4.7.2
binutils-2.23.1
gettext-0.18.2


A full compile log for gcc-4.8.0 is attached





when gcc is built without gettext support, but gettext-



More information about the Gcc-bugs mailing list