About the Samba Solaris 10 Problem – undefined symbol libintl_gettext
Recently I had to install the latest version of Samba on one of our Solaris 10 development boxes. Initially I tried to use the packages linked on http://www.sunfreeware.com but it appears that these had been compiled for a higher patch level of Solaris 10. Samba installed without issue and so did the dependencies listed on there, but none of the binaries would launch (nmbd, smbd, smbclient, etc…). Since our it’s critical this particular box stays up I didn’t want to patch the OS and have any downtime and so I downloaded the source from http://www.samba.org.
Compiling From Source on Solaris 10
After unpacking the tarball I changed to the ‘source3′ directory and tried to compile with the following:
./configure --without-ldap --without-ads --without-sys-quotas --without-manpages --with-libsmbclient --without-winbind --without-python --enable-shared --disable-cups make
I disabled certain built in features during the configure to reduce the number of dependencies required and as a result the extra libraries which I may have had to install. However, no matter what I changed I kept coming across an undefined reference for libintl:
Undefined first referenced symbol in file libintl_gettext utils/net.o libintl_textdomain utils/net.o libintl_bindtextdomain utils/net.o
I’ve compiled this many times before without fault on various Linux distributions so I was surprised to have come across this problem. Now I know libintl.so was installed in /lib/ and I knew it worked fine as other applications which depended on it were fully functioning.
After searching through various google results I decided to edit the Samba Makefile. The first change I made was an edit to ./source3/Makefile in which I appended -lintl to the first instance of the LIBS= variable. To my surprise after running the make again everything compiled fine and a make install put it all in the right place. I wish every linking issue was that easy to fix.