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: unassig...@gcc.gnu.org

        ReportedBy: tre...@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-

Reply via email to