Re: Compiling mc: libgnomeui.so: undefined reference to `dgettext'



Tom Tromey <tromey@cygnus.com> writes:

> Stephanos> gcc [ ... ] -lX11 -lSM -lICE -lintl -lgpm -lintl
> Stephanos> /usr/local/lib/libgnomeui.so: undefined reference to `dgettext'

I have the same problem.

> This probably means your libintl is bad.  Take a look at it with nm.
> If it doesn't define dgettext, then it is the wrong library.

It isn't possible to compile GNOME without gettext.  There is some
dependency on the xgettext command (from guile-libs or guile-core, I
don't remember) which makes the compilation process break with weird
error messages if you don't have the xgettext command on your system.
(@XGETTEXT@ is replaced by spaces in the Makefile...)

I have grabbed the GNU gettext-0.10.tar.gz and made a vanilla
configure, make, and make install (on my Debian system).

This is the result:

nm -g /usr/local/lib/libintl.a | grep dgettext
dgettext.o:
00000000 T dgettext__
         U dgettext__

Apparently, dgettext isn't defined.  Should it be?

Looking at the dgettext source, I find a file `intl-compat.c' (which
isn't included in the library):

char *
dgettext (domainname, msgid)
     const char *domainname;
     const char *msgid;
{
  return dgettext__ (domainname, msgid);
}

Maybe libgnomeui should conditionally include intl-compat.c if it
only find dgettext__?

Looking at the intl library included in mc I do detect a dgettext
function:

nm -g mc/intl/libintl.a | grep dgettext
00000060 T dgettext
         U dgettext__
dgettext.o:
00000000 T dgettext__
         U dgettext__

And, looking at the link command line, the part
"-L/usr/local/gnome/src/mc/intl -lintl" should be enough for the
linker to find dgettext, but...

make[1]: Entering directory `/usr/local/gnome/src/mc/gnome'
gcc   -L/usr/X11R6/lib -L/usr/local/lib -lgnomeui -lgnome
-lgnomesupport -ldl -lgdk_imlib -ltiff -lgif -ljpeg -lpng -lz -lz -lSM
-lICE -L/usr/local/lib -L/usr/X11R6/lib -lgtk-1.1 -lgdk-1.1
-L/usr/local/lib -lglib-1.1 -lXext -lX11 -lm -o gmc mad.o main.o dlg.o
screen.o widget.o wtools.o info.o boxes.o file.o find.o dialog.o
help.o key.o chmod.o chown.o view.o panelize.o hotlist.o listmode.o
background.o dir.o util.o win.o color.o profile.o user.o ext.o setup.o
tree.o subshell.o terms.o achown.o fsusage.o mountlist.o regex.o
complete.o command.o option.o cmd.o utilunix.o popt.o xslint.o gkey.o
gmain.o gscreen.o gwidget.o gmenu.o ghelp.o ginfo.o glayout.o gtools.o
gdesktop.o gtrans.o gutil.o gcmd.o gmc-chargrid.o gview.o gprop.o
gpageprop.o gcliplabel.o gcache.o gblist.o -L../vfs -L../slang
-L../edit -lvfs-mc -lmcslang -ledit -L/usr/local/gnome/src/mc/intl
-lintl -lX11  -lSM -lICE -lintl  -lext2fs -lcom_err
/usr/local/lib/libgnomeui.so: undefined reference to `dgettext'
make[1]: *** [mx] Error 1
make[1]: Leaving directory `/usr/local/gnome/src/mc/gnome'

I still get the dgettext error.

> Again, do you have an mc/intl directory?

Yes.

> Is there anything in it?

Yes.

> On systems with a bad libintl, a working libintl should be built
> there.

The relevant part of the mc config.cache is:

gt_cv_func_gettext_libc=${gt_cv_func_gettext_libc=no}
gt_cv_func_gettext_libintl=${gt_cv_func_gettext_libintl=no}
nls_cv_force_use_gnu_gettext=${nls_cv_force_use_gnu_gettext=no}
nls_cv_header_intl=${nls_cv_header_intl=intl/libintl.h}
nls_cv_header_libgt=${nls_cv_header_libgt=intl/libgettext.h}
nls_cv_use_catgets=${nls_cv_use_catgets=no}
nls_cv_use_gnu_gettext=${nls_cv_use_gnu_gettext=yes}

> What sort of system do you have?

A Debian 2.0-system with gettext-0.10 installed by me.

/mdj



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]