Autoconf, Libtool, and an undefined AC_PROG_LIBTOOL
I am trying to build a library, and the README instructions are to call configure.ac, then make.
Unfortunately, I am running into an error:
configure.ac:75 :error: possibly undefined macro: AC_PROG_LIBTOOL
If this token is legitimate please use m4_pattern_allow
Now, I know I have libtool installed (I'm running Scientific Linux 6.2 (un-upgraded), and have used yum --downloadonly to get the rpms of automake, autoconf, libtool, and libtool-devel just in case).
They are installed, and libtool currently lives in /usr/share/libtool. However, autoconf can't seem to find it.
All of the google results were of the 'install libtool' kind, which doesn't help me at all. Any help or guidance would be really appreciated. I'm not sure if the issue is that rpm -i screwed up getting libtool on here, or if i need to link the /usr/share/libtool to somewhere else (so which and everything else can find it).
Solution 1:
I wasn't satisfied with all the "just reinstall" answers I've found all over the Internet in various forums, so was bound and determined to resolve this without installing a non-distro libtool. (I'm running on CentOS 7.)
The lightbulb above my head lit up when I read https://www.gnu.org/software/automake/manual/html_node/Macro-Search-Path.html. The search path used to find the macro files is the one defined by --prefix
, which by default is usually /usr/local
. So autoconf for a package which will be installed to /usr/local
searches /usr/local/share/aclocal-APIVERSION
and /usr/local/share/aclocal
.
On many distros, including CentOS7, the seven macro files for libtools
are installed under /usr/share/aclocal
rather than under /usr/local/share/aclocal
. Consequently, they aren't found when the package you are building sets prefix to /usr/local
.
To fix this if you already have a /usr/local/share/aclocal
directory, type the following as root:
for file in argz libtool ltdl ltoptions ltsugar ltversion lt~obsolete
do
ln -s /usr/share/aclocal/$file.m4 /usr/local/share/aclocal/$file.m4
done
To fix this if you don't have a /usr/local/share/aclocal
directory, type the following as root:
ln -s /usr/share/aclocal /usr/local/share/aclocal
Voilà -- problem solved.
Solution 2:
you must install libtool
in ubuntu:
sudo apt-get install libtool
in redhat based:
yum install libtool