libtool版本不匹配错误


73

在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?

Answers:


141

尝试跑步

autoreconf --force --install
./configure
make

在项目的根目录中。

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

如果仍然无法运行,请运行make maintainer-clean,然后删除项目根目录中的每个生成的文件。包括aclocal.m4,任何m4目录,任何autom4te.cache目录,configureMakefile.inconfig.hconfig.h.inconfig.statuslibtoolltmain.sh,等。然后转到步骤1。

为什么这样工作的: libtoolaclocal.m4是由你的编译系统生成的两个文件。如果它们不同步(由生成工具的不同版本生成),则会出现此错误。通常不应该发生这种情况,但是当您将生成的文件检入到源代码管理中时,可能导致这种情况的一个例子。

该解决方案的作用是删除并重新生成所有自动生成的文件。一旦将其擦除并重新生成,它们将不再不同步。


6
我不想编辑答案,因为我听不懂,但是我遇到了这个错误,autoreconf还不够。我不得不跑步:aclocal; libtoolize --force; autoheader; autoconf
djeikyb 2012年

2
autoreconf除了为您运行所有这些程序外,什么也没有做。--force不过,添加选项可能是一个好主意,我将编辑答案。
ptomato 2012年

我在ubuntu 12.04上用php5尝试了此操作,但此命令执行./configure后情况变得更糟:此后我无法成功执行
hek2mgl

如果有autogen.shbootstrap脚本,请先运行。
ptomato

4
但是为什么这有帮助呢?版本不匹配到底是什么?
user1603472 2014年


8

如果您正在使用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


3

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


2
直到我运行哪个libtool并发现它指向我的anaconda安装,才意识到这一点。谢谢!
Yadli

1

尝试运行aclocal


1
谢谢您的回答。您能更具体一点吗?我必须使用哪些选项?谢谢!
mspoerr 2010年

0

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

须藤apt-get install texinfo autoconf automake make
./bootstrap
。/配置
使
须藤使安装


0

以上都不起作用。停用conda环境后,它起作用了:

source deactivate


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 

然后制作。


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
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.