75

在 Ubuntu 10.04 上使用 kdevelop 3.5 构建我的应用程序时,出现以下错误:

libtool: Version mismatch error. This is libtool 2.2.6 Debian-2.2.6a-4, but the
libtool: definition of this LT_INIT comes from libtool 2.2.6b.
libtool: You should recreate aclocal.m4 with macros from libtool 2.2.6 Debian-2.2.6a-4
libtool: and run autoconf again.
make[2]: *** [wktools4] Error 63
make[2]: Target `all' not remade because of errors.
make[1]: *** [all-recursive] Error 1
make: *** [all] Error 2
*** Exited with status: 2 ***

我在哪里可以获得所需版本的 libtool,或者如何重新创建 aclocal.m4?

4

10 回答 10

154

尝试运行

autoreconf --force --install
./configure
make

在项目的根目录中。

如果这不起作用,请尝试make maintainer-clean先运行,然后转到步骤 1。

如果还是不行,运行make maintainer-clean,然后删除项目根目录下所有生成的文件;包括aclocal.m4, 任意m4目录, 任意autom4te.cache目录, configure, Makefile.in, config.h, config.h.in, config.status, libtool, ltmain.sh, 等。然后转到步骤 1。

为什么会这样: libtool并且aclocal.m4这两个文件都是由您的构建系统生成的。如果它们不同步(由不同版本的构建工具生成),则会出现此错误。通常这不应该发生,但是当您将生成的文件签入到源代码控制时,可能会导致这种情况的一个示例。

该解决方案所做的是删除并重新生成所有自动生成的文件。一旦它们被擦除并重新生成,它们就不能再不同步了。

于 2010-07-08T15:43:39.803 回答
12

尝试

autoreconf -i

-i选项很重要。

于 2011-01-09T15:00:00.120 回答
11

如果您使用的是 Anaconda,那么这可能是由于 libtool 和 autoconf 来自不同的来源。您可以通过执行检查这一点

which libtool

which autoconf

我的 libtool 来自 conda,而 autoconf 是一个系统包。卸载 autoconf 并使用 conda 再次安装

apt remove -y autoconf(Ubuntu/Debian)

conda install -c anaconda autoconf

注意:您可能还需要安装 automake。

conda install -c anaconda automake

于 2018-04-12T05:23:33.763 回答
3

也许你已经安装了两个不同版本的 libtools。尝试apt-get remove all(直到您一无所获,当您which libtool在命令行中键入时),然后apt-get install选择您喜欢的。

于 2012-03-21T08:26:34.487 回答
1

尝试运行 aclocal

于 2010-06-22T21:02:08.383 回答
0

我解决了卸载系统的 libtool 并从上游安装: git clone git://git.savannah.gnu.org/libtool.git

sudo apt-get install texinfo autoconf automake make
./bootstrap
。/配置
制作
须藤使安装
于 2012-12-12T10:47:57.777 回答
0

以上都没有奏效。

然后这工作:

autoconf -f
./configure
make
于 2015-12-20T02:23:16.277 回答
0

以上都没有奏效。在我停用 conda 环境后,它起作用了:

source deactivate

于 2018-03-03T20:19:15.510 回答
0

我也遇到这个问题。就我而言,在./autogen.sh 的输出中,有:

libtoolize:您应该将以下文件的内容添加到 'aclocal.m4': libtoolize: '/aclocal/libtool.m4' libtoolize: '/aclocal/ltoptions.m4' libtoolize: '/aclocal/ltversion.m4' libtoolize:考虑将“AC_CONFIG_MACRO_DIRS([m4])”添加到 configure.ac、libtoolize: 并重新运行 libtoolize 和 aclocal。libtoolize:考虑在 Makefile.am 中将“-I m4”添加到 ACLOCAL_AMFLAGS。

我只是将 /aclocal/ 下的三个 *.m4 文件的内容附加到 aclocal.m4 文件中:

cat <a path>/aclocal/libtool.m4 <a path>/aclocal/ltoptions.m4 <a path>/aclocal/ltversion.m4 >> aclocal.m4 

然后制作。

于 2019-05-09T17:54:18.383 回答
0

这是错误:

libtool: Version mismatch error.  This is libtool 2.4.2 Debian-2.4.2-1.11, but the
libtool: definition of this LT_INIT comes from libtool 2.4.6.
libtool: You should recreate aclocal.m4 with macros from libtool 2.4.2 Debian-2.4.2-1.11
libtool: and run autoconf again.

以上都没有奏效。

然后这工作:

wget http://ftpmirror.gnu.org/libtool/libtool-2.4.6.tar.gz -O /root/libtool-2.4.6.tar.gz
tar xzvf /root/libtool-2.4.6.tar.gz -C /root
cp -f /usr/share/libtool/build-aux/ltmain.sh /usr/share/libtool/build-aux/ltmain_sh
cp -f /root/libtool-2.4.6/build-aux/ltmain.sh /usr/share/libtool/build-aux/ltmain.sh

autoreconf -fi
./configure
make
于 2019-08-11T14:45:44.117 回答