libtool: Ошибка несоответствия версий: 2.4.6 (ожидаемая) и 2.4.6.42-b88ce (действительная), aclocal не имеет никакого эффекта - PullRequest
1 голос
/ 26 октября 2019

Вкл. 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.

I 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. Откуда они берутся?

Я переустановил libtool с помощью apt-get.

Я проверяю его версию.

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? Как решить ошибку? Пожалуйста, помогите разобраться в проблеме.

PS Информация о системе (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

1 Ответ

0 голосов
/ 26 октября 2019

Отвечаю себе.

Эти суффиксы были в исходном ltmain.sh, распространяемом в пакете библиотеки, который я пытаюсь собрать. Причина этих суффиксов, вероятно, заключается в том, что предыдущий разработчик создал libtool из исходного кода (поэтому суффиксы b88ce и .42 могут быть хэшем последнего коммита и номером патча).

Решение состоит в том, чтобы заново сгенерировать ltmain.sh, выполнив libtoolize [1]. Обратите внимание, что пользователи OSX должны использовать glibtoolize (поскольку OSX имеет собственную команду с аналогичным именем libtool).

Окончательная последовательность сборки:

libtoolize && aclocal && autoconf && automake && ./configure && make -j4

Ссылки:

  1. https://www.gnu.org/software/automake/manual/html_node/Error-required-file-ltmain_002esh-not-found.html
...