我正在尝试构建一个库,README 说明是调用 configure.ac,然后调用 make。
不幸的是,我遇到了一个错误:
configure.ac:75 :error: possibly undefined macro: AC_PROG_LIBTOOL
If this token is legitimate please use m4_pattern_allow
现在,我知道我已经安装了 libtool(我正在运行 Scientific Linux 6.2(未升级),并且使用 yum --downloadonly 来获取 automake、autoconf、libtool 和 libtool-devel 的 rpms 以防万一)。
它们已安装,并且 libtool 目前位于 /usr/share/libtool。但是,autoconf 似乎找不到它。
所有谷歌搜索结果都是“安装 libtool”类型,这对我一点帮助都没有。任何帮助或指导都将不胜感激。我不确定问题是否是 rpm -i 搞砸了获取 libtool,或者我是否需要将 /usr/share/libtool 链接到其他地方(这样 which 和其他一切都可以找到它)。
答案1
我对在互联网上各个论坛上找到的所有“只需重新安装”答案都不满意,因此我决心在不安装非发行版 libtool 的情况下解决这个问题。(我在 CentOS 7 上运行。)
当我读到https://www.gnu.org/software/automake/manual/html_node/Macro-Search-Path.html. 查找宏文件的搜索路径是由 定义的--prefix
,通常默认为/usr/local
。因此,对于将要安装到 的包,autoconf将/usr/local
搜索/usr/local/share/aclocal-APIVERSION
。/usr/local/share/aclocal
在许多发行版中,包括 CentOS7,的七个宏文件libtools
安装在 下/usr/share/aclocal
,而不是 下/usr/local/share/aclocal
。因此,当您构建的包将前缀设置为 时,找不到它们/usr/local
。
如果您已经有目录,要修复此问题/usr/local/share/aclocal
,请以 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
如果您没有/usr/local/share/aclocal
目录,要修复此问题,请以 root 身份输入以下命令:
ln -s /usr/share/aclocal /usr/local/share/aclocal
瞧——问题解决了。
答案2
你必须安装 libtool
在Ubuntu中:
sudo apt-get install libtool
在redhat基础上:
yum install libtool
答案3
我还将 libtool 和其他程序安装到了非标准目录中,这个错误实际上是 autoconf 无法找到 libtool 的 m4 宏。是的,这可能是由于未安装 libtool 导致的,也可能是由于 libtool 位于非标准安装目录中。以下是我的修复方法:
export ACLOCAL_PATH=$HOME/install/libtool/share/aclocal:$ACLOCAL_PATH
我把它放在我的.bash_profile
答案4
configure.ac:75 :error: possibly undefined macro: AC_PROG_LIBTOOL If this token is legitimate please use m4_pattern_allow
现在,我知道我已经安装了 libtool ...
我发现这通常表明您没有libtool
安装开发设备(尽管您可能已经libtool
安装了)。
您应该libltdl-dev
在 Debian 和 Ubuntu 以及libtool-ltdl-devel
Fedora 上安装。
以下是对包的搜索。
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
...