Autoconf, Libtool, and an undefined AC_PROG_LIBTOOL

17

2

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).

user2093082

Posted 2013-03-14T17:52:11.947

Reputation: 171

Answers

12

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.

Steve Wolf

Posted 2013-03-14T17:52:11.947

Reputation: 121

Great tip, more or less fixed this (suuuper-aggravating, persistent) issue for me on a CentOS 7 cluster. If the project ships with an autogen.sh you can also modify the exec autoreconf line to include -I /usr/share/alocal along with the other options, which is what I actually did. The actual command invoked to generate the configure script is then autoreconf -v -f -i -I /usr/share/aclocal. – TheDudeAbides – 2019-08-13T01:30:51.680

11

you must install libtool

in ubuntu:

sudo apt-get install libtool

in redhat based:

yum install libtool

haw3d

Posted 2013-03-14T17:52:11.947

Reputation: 270

5The question said already this is not the problem. – Kevin Panko – 2013-12-21T17:39:28.277

9

I also installed libtool and others to non-standard directories, and this error is actually autoconf not being able to find libtool's m4 macros. Yes it can be caused by libtool not being installed, but also by it being in a non-standard install directory. Here is my fix:

export ACLOCAL_PATH=$HOME/install/libtool/share/aclocal:$ACLOCAL_PATH

which I placed in my .bash_profile

Dan Ibanez

Posted 2013-03-14T17:52:11.947

Reputation: 91

2Another way to do this: autoreconf -I $HOME/install/libtool/share/aclocal – Moraru Lilian – 2018-01-05T19:56:37.287

1

You need to reinstall it in order to fix the error so follow these steps :

1] Remove current libtool if installed: sudo apt-get purge libtool

2] Download it from official website https://www.gnu.org/software/libtool/

3] Untar it: tar -xzvf "name of the tar_file"

4] Enter folder and type: ./configure && make

5] Install it: sudo make install

And you are done, error should be fixed !

User1911

Posted 2013-03-14T17:52:11.947

Reputation: 19

0

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've found this usually indicates you don't have libtool development gear installed (though you may have libtool installed).

You should install libltdl-dev on Debian and Ubuntu; and libtool-ltdl-devel on Fedora.


Here are the searches for the packages.

Fedora

$ yum search libtool
======================== Name Exactly Matched: libtool =========================
libtool.x86_64 : The GNU Portable Library Tool
======================= Summary & Name Matched: libtool ========================
libtool-ltdl.x86_64 : Runtime libraries for GNU Libtool Dynamic Module Loader
libtool-ltdl.i686 : Runtime libraries for GNU Libtool Dynamic Module Loader
libtool-ltdl-devel.x86_64 : Tools needed for development using the GNU Libtool
                          : Dynamic Module Loader
libtool-ltdl-devel.i686 : Tools needed for development using the GNU Libtool
                        : Dynamic Module Loader
=========================== Summary Matched: libtool ===========================
mingw32-libltdl.noarch : Runtime libraries for GNU Libtool Dynamic Module Loader
mingw64-libltdl.noarch : Runtime libraries for GNU Libtool Dynamic Module Loader

Ubuntu

$ apt-cache search libtool
autotools-dev - Update infrastructure for config.{guess,sub} files
libltdl-dev - System independent dlopen wrapper for GNU libtool
libltdl7 - System independent dlopen wrapper for GNU libtool
libtool - Generic library support script
libtool-bin - Generic library support script (libtool binary)
libtool-doc - Generic library support script
...

jww

Posted 2013-03-14T17:52:11.947

Reputation: 1