libtool版本不匹配错误

时间:2010-06-22 20:42:49

标签: autotools libtool

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

10 个答案:

答案 0 :(得分:123)

尝试运行

autoreconf --force --install
./configure
make

在项目的根目录中。

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

如果仍然无效,请运行make maintainer-clean,然后删除项目根目录中的每个生成的文件;包括aclocal.m4,任意m4目录,任何autom4te.cache目录,configureMakefile.inconfig.hconfig.h.in,{{1 }},config.statuslibtool等。然后转到第1步。

为什么会这样: ltmain.shlibtool都是由您的构建系统生成的文件。如果它们不同步(由不同版本的构建工具生成),则会出现此错误。通常这不应该发生,但是可以导致它的一个例子就是当您将生成的文件签入源代码控制时。

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

答案 1 :(得分:10)

尝试

autoreconf -i

-i选项很重要。

答案 2 :(得分:6)

如果您使用的是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 :(得分:3)

也许你已经安装了两个不同版本的libtools。尝试apt-get remove all(直到你在命令行中输入which libtool时什么也得不到),然后apt-get install你喜欢的那个。

答案 4 :(得分:1)

尝试运行aclocal

答案 5 :(得分:0)

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

sudo apt-get install texinfo autoconf automake make
./bootstrap
./configure
make
sudo make install

答案 6 :(得分:0)

以上都没有。

然后这工作:

autoconf -f
./configure
make

答案 7 :(得分:0)

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

source deactivate

答案 8 :(得分: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 

然后化妆。

答案 9 :(得分: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