发现自动错误'./ltmain.sh'

use*_*414 22 c automake autotools libtool mingw32

我已经安装了mingw和msys mingw-get-setup.exe.我还安装了Autotools(autoconf,automake,m4,libtool)C:\/opt/autotools.

当我运行automake时,总会发生以下错误:

configure.ac:11: error: required file './ltmain.sh' not found
Run Code Online (Sandbox Code Playgroud)

如果我ltmain.sh从libtool的已安装树中复制,执行将正常完成.

如何在ltmain.sh不复制的情况下将automake配置为查找?

Dan*_*lKO 54

autoconf/ automake/ libtoolproject中你必须调用:

  • libtoolize:这复制/链接一些支持脚本,包括ltmain.sh(这是libtool的主要组件).
  • aclocal:这会查找配置脚本需要的所有m4宏,并制作本地副本以便于访问.
  • autoheader:可选,如果要使用config.h/ AC_CONFIG_HEADERS,则在调用编译器时将内联所有测试结果宏.
  • autoconf:将所有使用的宏展开configure.acconfigure脚本中.
  • automake:将所有转换Makefile.amMakefile.in模板.你可能想调用此--add-missing所以额外的支持脚本可以链接/复制到你的项目(如compile,missing,depcomp,test-driver,等).

您很可能希望bootstrap按此顺序向每个项目添加一个脚本,以调用所有这些工具.或者你可能是懒惰的,只是调用autoreconf -i,看看它是否适用于你的项目.

在您Makefile完成配置脚本生成的工作之后(以及之后),autotools会自行处理; 也就是说,如果你编辑configure.ac,或者任何Makefile.am,通过简单地运行,将再次调用上面的正确工具以保持所有更新make.只是要小心不要在Makefile.am文件中创建语法错误,否则你可能最终会破坏Makefiles,导致make拒绝运行 - 在这种情况下你必须手动运行bootstrap脚本(或autoreconf).

编辑:

关于aclocal,该自动化手册说明了这一点:

aclocal 预计会消失.

进一步向下:

从用户的角度来看,aclocal删除可能会变得很痛苦.您可以采取一种简单的预防措施,使交换机更加无缝:永远不要自己调用aclocal.让这个人完全由autoreconfAutomake的重建规则控制.

所以你有它:autoreconf -i用来防止面向未来,除非你有充分的理由直接使用这些工具.

  • 非常有帮助非常感谢,只需要"sudo libtoolize && sudo aclocal && sudo autoheader && sudo autoconf && sudo automake --add-missing" (3认同)
  • @ransh`sudo`并不意味着可以随意使用,出于同样的原因,您不应使用始终以root用户身份登录的* nix系统。编译软件不是管理任务,它不应要求升级的特权。 (2认同)