我正在构建 autoconf-2.68。
我对这个工具不是很熟悉。然而,在分析Makefiles之后,我发现运行脚本时构建失败autoconf-2.68/bin/autom4te
。
我遇到这个错误:
bash: ./autom4te :/home/user/workspace/output: bad interpreter: No such file or directory
我所做的一些分析
echo $SHELL
/bin/bash
在 autom4te 中,我在 BEGIN 函数中找到了这一行
$ENV{'SHELL'} = '/bin/sh' if ($^O eq 'dos');
这会导致问题吗?有什么想法可以解决吗?
编辑
autom4te 的第一行是:
#! /home/user/Workspace/output/xx_yyyyyyy_pp88_tttttt_uuuuuuu_aaa_bbbbbbb/host/usr/bin/perl -w
# -*- perl -*-
# Generated from autom4te.in; do not edit by hand.
eval 'case $# in 0) exec /home/user/Workspace/output/xx_yyyyyyy_pp88_tttttt_uuuuuuu_aaa_bbbbbbb/host/usr/bin/perl -S "$0";; *) exec /home/user/Workspace/output/xx_yyyyyyy_pp88_tttttt_uuuuuuu_aaa_bbbbbbb/host/usr/bin/perl -S "$0" "$@";; esac'
if 0;
脚本调用者:
autoconf.in: $(srcdir)/autoconf.as $(m4sh_m4f_dependencies)
$(MY_AUTOM4TE) --language M4sh --cache '' --melt $(srcdir)/autoconf.as -o $@
MY_AUTOM4TE
定义为:
MY_AUTOM4TE = \
autom4te_perllibdir='$(top_srcdir)'/lib \
AUTOM4TE_CFG='$(AUTOM4TE_CFG)' $(top_builddir)/bin/autom4te \
-B '$(top_builddir)'/lib -B '$(top_srcdir)'/lib # keep ` '
答案1
问题来自于以下解释器行autom4te
:
#! /home/user/Workspace/output/xx_yyyyyyy_pp88_tttttt_uuuuuuu_aaa_bbbbbbb/host/usr/bin/perl -w
看来路太长了。
这解释了错误输出:
bash: ./autom4te :/home/user/workspace/output: bad interpreter: No such file or directory
它停止output
并且无法读取解释器的完整路径。通过更改解释器的路径(短路径):
#! /home/user/Workspace/output/xxx/host/usr/bin/perl -w
问题解决了。