libtool: Version mismatch error: 2.4.6 (expected) vs 2.4.6.42-b88ce (actual), aclocal has no effect
libtool: Version mismatch error: 2.4.6 (expected) vs 2.4.6.42-b88ce (actual), aclocal has no effect
在 make
我得到这个错误:
libtool: Version mismatch error. This is libtool 2.4.6.42-b88ce, 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.6.42-b88ce
libtool: and run autoconf again.
我运行aclocal && autoconf && ./configure && make -j4
.
我再次make
,我得到了同样的错误!很意外...
我开始检查生成的 libtool
脚本。
# Which release of libtool.m4 was used?
macro_version=2.4.6
macro_revision=2.4.6
...
PROGRAM=libtool
PACKAGE=libtool
VERSION=2.4.6.42-b88ce
package_revision=2.4.6.42
所以问题是这些 .42-b88ce
和 .42
后缀。他们来自哪里?
我用 apt-get 重新安装了 libtool。
我检查它的版本。
dev0@DESKTOP-KK30DO1:~$ apt list --installed | grep libtool
WARNING: apt does not have a stable CLI interface. Use with caution in scripts.
libtool/stable,now 2.4.6-9 all [installed]
这里我们看到实际上是2.4.6-9
,即带有-9
后缀。
好的...这是怎么回事?这些 .42-b88ce
和 .42
后缀从何而来?如何解决错误?请帮助理解问题。
P.S。系统信息(uname -a
):
Linux DESKTOP-KK30DO1 4.19.0-6-amd64 #1 SMP Debian 4.19.67-2+deb10u1 (2019-09-20) x86_64 GNU/Linux
回复我自己。
这些后缀最初 ltmain.sh
分布在我试图构建的库包中。这些后缀的原因很可能是以前的开发人员从源代码构建了 libtool
(所以 b88ce
和 .42
后缀可以是最后一次提交的哈希和补丁号)。
解决方法是通过执行libtoolize
[1]重新生成ltmain.sh
。请注意 OSX 用户应该使用 glibtoolize
(因为 OSX 有自己的命令,名称与 libtool
相似)。
最终构建顺序为:
libtoolize && aclocal && autoconf && automake && ./configure && make -j4
参考文献:
在 make
我得到这个错误:
libtool: Version mismatch error. This is libtool 2.4.6.42-b88ce, 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.6.42-b88ce
libtool: and run autoconf again.
我运行aclocal && autoconf && ./configure && make -j4
.
我再次make
,我得到了同样的错误!很意外...
我开始检查生成的 libtool
脚本。
# Which release of libtool.m4 was used?
macro_version=2.4.6
macro_revision=2.4.6
...
PROGRAM=libtool
PACKAGE=libtool
VERSION=2.4.6.42-b88ce
package_revision=2.4.6.42
所以问题是这些 .42-b88ce
和 .42
后缀。他们来自哪里?
我用 apt-get 重新安装了 libtool。
我检查它的版本。
dev0@DESKTOP-KK30DO1:~$ apt list --installed | grep libtool
WARNING: apt does not have a stable CLI interface. Use with caution in scripts.
libtool/stable,now 2.4.6-9 all [installed]
这里我们看到实际上是2.4.6-9
,即带有-9
后缀。
好的...这是怎么回事?这些 .42-b88ce
和 .42
后缀从何而来?如何解决错误?请帮助理解问题。
P.S。系统信息(uname -a
):
Linux DESKTOP-KK30DO1 4.19.0-6-amd64 #1 SMP Debian 4.19.67-2+deb10u1 (2019-09-20) x86_64 GNU/Linux
回复我自己。
这些后缀最初 ltmain.sh
分布在我试图构建的库包中。这些后缀的原因很可能是以前的开发人员从源代码构建了 libtool
(所以 b88ce
和 .42
后缀可以是最后一次提交的哈希和补丁号)。
解决方法是通过执行libtoolize
[1]重新生成ltmain.sh
。请注意 OSX 用户应该使用 glibtoolize
(因为 OSX 有自己的命令,名称与 libtool
相似)。
最终构建顺序为:
libtoolize && aclocal && autoconf && automake && ./configure && make -j4
参考文献: