What steps will reproduce the problem?
1. configure git 1.7.9.4 on Solaris
2. make
What is the expected output? What do you see instead?
The expected output is a successful link, but what I actually get is
cc -I/local/include -I/local/gnu/include -I/local/openssl/include
-I/local/include -I/local/krb5/include -I/local/BerkeleyDB/include
-I/local/include -Xa -xO3 -xtarget=generic -m64 -xarch=generic -I/local/include
-I/local/gnu/include -I/local/openssl/include -I/local/include
-I/local/krb5/include -I/local/BerkeleyDB/include -I/local/include -I.
-D__EXTENSIONS__ -D__sun__ -DHAVE_ALLOCA_H -DNO_D_TYPE_IN_DIRENT -DOLD_ICONV
-mt -DSHA1_HEADER='<openssl/sha.h>' -DNO_STRCASESTR -Icompat/fnmatch
-DNO_FNMATCH_CASEFOLD -DNO_MKDTEMP -DNO_MKSTEMPS -DNO_MEMMEM -Icompat/regex -o
git-daemon -L/local/lib/64 -L/local/gnu/lib/64 -L/local/openssl/lib/64
-L/local/lib/64 -L/local/krb5/lib/64 -L/local/BerkeleyDB/lib/64 -L/local/lib/64
daemon.o libgit.a xdiff/lib.a -lz -lsocket -lnsl -lresolv -lcrypto -mt
Undefined first referenced
symbol in file
libintl_bind_textdomain_codeset libgit.a(gettext.o)
libintl_gettext libgit.a(commit.o)
libintl_textdomain libgit.a(gettext.o)
libintl_bindtextdomain libgit.a(gettext.o)
libintl_ngettext libgit.a(remote.o)
ld: fatal: Symbol referencing errors. No output written to git-daemon
gmake: *** [git-daemon] Error 2
What version of the product are you using? On what operating system?
git 1.7.9.4 on x86_64-sun-solaris2.10
Please provide any additional information below.
The problem is (I think) because git is detecting that Solaris has a gettext()
function in libc:
checking for basename in -lc... yes
checking for gettext in -lc... yes
checking how to run the C preprocessor... cc -E
*but* that gettext() function is incompatible with GNU gettext. Configure then
later detects the presence of GNU libintl.h:
checking for unistd.h... yes
checking libintl.h usability... yes
checking libintl.h presence... yes
checking for libintl.h... yes
so at this point it believes that it has what it needs. The problem is that it
has the GNU gettext headers, which remap all the functions to the libintl_*
names, but it thinks it can link with libc to get the functions it needs, when
it can't. It needs to link with libintl.
The easiest fix would probably just be to use the AM_GNU_GETTEXT macro to
detect what's needed to get GNU gettext. That's what scores of other packages
do, but it requires a lot of support files from autoconf & automake.
The other potential way to work around it is to just hack configure so that if
the target host is Solaris, ignore the gettext() result from libc.
Original issue reported on code.google.com by Timothy....@gmail.com on 22 Mar 2012 at 11:27
Original issue reported on code.google.com by
Timothy....@gmail.com
on 22 Mar 2012 at 11:27