Autoconf、Libtool 和未定义的 AC_PROG_LIBTOOL

use*_*082 21 autoconf

我正在尝试构建一个库,README 说明是调用configure.ac,然后make。

不幸的是,我遇到了一个错误:

configure.ac:75 :error: possibly undefined macro: AC_PROG_LIBTOOL
    If this token is legitimate please use m4_pattern_allow
Run Code Online (Sandbox Code Playgroud)

现在,我知道我已经安装了 libtool(我正在运行 Scientific Linux 6.2(未升级),并使用 yum --downloadonly 来获取 automake、autoconf、libtool 和 libtool-devel 的 rpm,以防万一)。

它们已安装,libtool 当前位于 /usr/share/libtool。但是,autoconf 似乎无法找到它。

所有的谷歌结果都是“安装 libtool”类型的,这对我没有任何帮助。任何帮助或指导将不胜感激。我不确定问题是否是 rpm -i 在这里获取 libtool 搞砸了,或者我是否需要将 /usr/share/libtool 链接到其他地方(以便其他任何东西都可以找到它)。

小智 15

我对我在 Internet 上的各种论坛上找到的所有“只需重新安装”的答案都不满意,因此必须并决心在不安装非发行版 libtool 的情况下解决此问题。(我在 CentOS 7 上运行。)

当我阅读https://www.gnu.org/software/automake/manual/html_node/Macro-Search-Path.html时,我头上的灯泡亮了。用于查找宏文件的搜索路径是由 定义的路径--prefix,默认情况下通常是/usr/local. 因此,将安装用于/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
Run Code Online (Sandbox Code Playgroud)

如果您没有/usr/local/share/aclocal目录,要解决此问题,请以 root 身份键入以下内容:

ln -s /usr/share/aclocal /usr/local/share/aclocal
Run Code Online (Sandbox Code Playgroud)

瞧——问题解决了。


haw*_*w3d 14

你必须安装 libtool

在 ubuntu 中:

sudo apt-get install libtool
Run Code Online (Sandbox Code Playgroud)

在基于红帽:

yum install libtool
Run Code Online (Sandbox Code Playgroud)

  • 问题已经说了这不是问题。 (5认同)

小智 10

我还将 libtool 和其他安装到非标准目录,这个错误实际上是 autoconf 无法找到 libtool 的 m4 宏。是的,这可能是由于未安装 libtool 引起的,也可能是由于它位于非标准安装目录中。这是我的修复:

export ACLOCAL_PATH=$HOME/install/libtool/share/aclocal:$ACLOCAL_PATH
Run Code Online (Sandbox Code Playgroud)

我把它放在我的 .bash_profile

  • 另一种方法: autoreconf -I $HOME/install/libtool/share/aclocal (2认同)