cross build error: libtool: line 1112: lib: command not found

cross build error: libtool: line 1112: lib: command not found

我正在尝试使用 M Cross Environment 从 Linux 为 windows 交叉构建一个应用程序,这实际上只是一个有助于使用 Mingw-w64 工具的 makefile 系统。该应用程序的构建系统是 autotools。

当我尝试构建时出现如下错误:

libtool: link: lib -OUT:.libs/liby12.lib  y12mae.o y12maf.o y12mbe.o y12mbf.o y12mce.o y12mcf.o y12mde.o y12mdf.o y12mfe.o y12mge.o y12mhe.o
../../libtool: line 1112: lib: command not found
make[4]: *** [liby12.la] Error 127
make[4]: Leaving directory `/opt/mxe/tmp-mbdyn-i686-w64-mingw32.static/mbdyn-1.7.1.build_/libraries/liby12'
make[3]: *** [all-recursive] Error 1
make[3]: Leaving directory `/opt/mxe/tmp-mbdyn-i686-w64-mingw32.static/mbdyn-1.7.1.build_/libraries'
make[2]: *** [all-recursive] Error 1
make[2]: Leaving directory `/opt/mxe/tmp-mbdyn-i686-w64-mingw32.static/mbdyn-1.7.1.build_'
make[1]: *** [build-only-mbdyn_i686-w64-mingw32.static] Error 2
make[1]: Leaving directory `/opt/mxe'

谁能解释一下问题出在哪里?

其他人在 this Whosebug question, although they appear to be building natively on windows. There is also discussion on a mailing list here 中也有类似的问题。这些来源都没有为我对 libtool 知识有限的人提供足够的信息来解决问题(我什至不知道第 1112 行指的是什么,即第 1112 行究竟是什么,libtool 本身?这是 libtool 中的注释行).

编辑:

我发现了以下线程:

http://cygwin.1069669.n5.nabble.com/libtool-link-object-name-conflicts-in-archive-td107913.html#a107969

这实际上是关于在 cygwin 上编译我正在交叉编译的同一应用程序(mbdyn,但较早的版本)。看来问题可能是由于配置在源目录中创建了一个 libtool 脚本。我猜这与交叉编译器 libtool 脚本或类似的东西冲突。

那么解决这个 libtool 问题的正确方法是什么?

这个问题实际上在 link 帖子中得到了解答。问题是 AC_PROG_F77 需要在 configure.ac 中的条件语句之外调用。否则 libtool 在进行交叉编译时会感到困惑,因为指定了 fortran 编译器并且永远不会触发条件。