【问题标题】:libtool version mismatch errorlibtool 版本不匹配错误
【发布时间】:2011-03-07 00:50:52
【问题描述】:

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

【问题讨论】:

    标签: autotools libtool


    【解决方案1】:

    尝试运行

    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 都是由您的构建系统生成的文件。如果它们不同步(由不同版本的构建工具生成),则会出现此错误。通常不应该发生这种情况,但是当您将生成的文件签入到源代码管理时,可能会导致这种情况。

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

    【讨论】:

    • 我不想编辑答案,因为我不明白,但我有这个错误,autoreconf 还不够。我不得不跑:aclocal; libtoolize --force; autoheader; autoconf
    • autoreconf 只是为您运行所有这些程序。不过,添加 --force 选项可能是个好主意,我将编辑答案。
    • 我在 ubuntu 12.04 上用 php5 尝试过这个,但是在这个命令之后事情变得更糟了:在这个之后我无法成功执行 ./configure
    • 如果有 autogen.shbootstrap 脚本,请先运行。
    • 但这有什么帮助呢?版本不匹配的真正原因是什么?
    【解决方案2】:

    试试

    autoreconf -i
    

    -i 选项很重要。

    【讨论】:

      【解决方案3】:

      如果您使用的是 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

      【讨论】:

        【解决方案4】:

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

        【讨论】:

        • 直到我运行 which libtool 并发现它指向我的 anaconda 安装时才意识到这一点。谢谢!
        【解决方案5】:

        尝试运行 aclocal

        【讨论】:

        • 感谢您的回答。你能更具体一点吗?我必须使用哪些选项?谢谢!
        【解决方案6】:

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

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

        【讨论】:

          【解决方案7】:

          以上都不起作用。

          然后这工作:

          autoconf -f
          ./configure
          make
          

          【讨论】:

            【解决方案8】:

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

            source deactivate

            【讨论】:

              【解决方案9】:

              我也遇到过这个问题。就我而言,在./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 
              

              然后制作。

              【讨论】:

                【解决方案10】:

                这是错误:

                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
                

                【讨论】:

                  猜你喜欢
                  • 2012-04-22
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 2017-12-20
                  • 2021-10-06
                  • 2017-11-03
                  • 2020-07-11
                  • 2012-12-19
                  相关资源
                  最近更新 更多