config/config.guess 被符号链接到第三方包中的错误文件
Posted
技术标签:
【中文标题】config/config.guess 被符号链接到第三方包中的错误文件【英文标题】:config/config.guess being symlinked to wrong file in third party package 【发布时间】:2016-02-12 12:39:49 【问题描述】:我正在尝试构建这个使用 automake 的专有第三方项目。我正在使用 Ubuntu 14.04。运行配置时,我收到此错误:
配置:错误:无法运行 /bin/bash ../config/config.sub
失败似乎是由于 config/ 中的文件被符号链接到我没有安装的特定 automake 版本:
lrwxrwxrwx 1 stefan stefan 2012 年 2 月 37 日 12:42 config.guess -> /usr/share/automake-1.11/config.guess lrwxrwxrwx 1 stefan stefan 35 feb 12 12:42 config.sub -> /usr/share/automake-1.11/config.sub
删除 config/ 中的文件并运行“autoreconf -fvi”不会导致重新生成它们,所以我不确定如何正确解决此问题。
我不想安装 automake-1.11 只是为了一些愚蠢的符号链接,所以我用 /usr/share/automake-1.14/ 中的较新版本覆盖了文件,它构建得很好。这应该可以吗,即使人们可能会使用旧版本的 automake(或新版本,就此而言)构建代码?还是有另一种更优雅的方式来解决这个问题?
编辑:第三方库的 autoreconf 输出:
autoreconf: Entering directory `somelib'
autoreconf: configure.ac: not using Gettext
autoreconf: running: aclocal --force
autoreconf: configure.ac: tracing
autoreconf: running: libtoolize --copy --force
libtoolize: putting auxiliary files in AC_CONFIG_AUX_DIR, `config'.
libtoolize: copying file `config/ltmain.sh'
libtoolize: Consider adding `AC_CONFIG_MACRO_DIR([m4])' to configure.ac and
libtoolize: rerunning libtoolize, to keep the correct libtool macros in-tree.
libtoolize: Consider adding `-I m4' to ACLOCAL_AMFLAGS in Makefile.am.
libtoolize: `AC_PROG_RANLIB' is rendered obsolete by `LT_INIT'
autoreconf: running: /usr/bin/autoconf --force
autoreconf: running: /usr/bin/autoheader --force
autoreconf: configure.ac: not using Automake
autoreconf: Leaving directory `somelib'
Edit2:我确实添加了:
AC_CONFIG_MACRO_DIR(配置)
配置.ac。令人困惑的是没有 Makefile.am - 该软件包似乎只使用 autoconf,而不是 automake,因为只有 Makefile.in。无论如何,通过上述更改,并在删除 config.* 文件后,我注意到它们在运行 autoreconf 后仍未重新生成。现在'autoreconf -fvi'的输出是:
autoreconf: configure.ac: not using Gettext
autoreconf: running: aclocal --force
autoreconf: configure.ac: tracing
autoreconf: running: libtoolize --copy --force
libtoolize: putting auxiliary files in AC_CONFIG_AUX_DIR, `config'.
libtoolize: copying file `config/ltmain.sh'
libtoolize: putting macros in AC_CONFIG_MACRO_DIR, `config'.
libtoolize: copying file `config/libtool.m4'
libtoolize: copying file `config/ltoptions.m4'
libtoolize: copying file `config/ltsugar.m4'
libtoolize: copying file `config/ltversion.m4'
libtoolize: copying file `config/lt~obsolete.m4'
libtoolize: Consider adding `-I config' to ACLOCAL_AMFLAGS in Makefile.am.
libtoolize: `AC_PROG_RANLIB' is rendered obsolete by `LT_INIT'
autoreconf: running: /usr/bin/autoconf --force
autoreconf: running: /usr/bin/autoheader --force
autoreconf: configure.ac: not using Automake
【问题讨论】:
如果autoreconf -fvi
不这样做 - 你应该包括 为什么 它不工作,错误等 - 那么他们的构建工具太旧了,或写不正确。与configure.ac
等相关的错误会很有用。
我已经添加了 autoreconf 的输出。我不完全是自动工具专家,所以无法从上面的输出中找出任何明显的错误——对我来说大部分都是中文:)。
很公平。 'Consider...'
行很能说明问题。您也可以尝试将ACLOCAL_AMFLAGS = -I m4 --install
添加到***Makefile.am
(如果还没有的话)。
【参考方案1】:
这感觉就像您尝试构建的软件包的 tarball 不是使用 make dist
构建的,叹息。
正如人们已经指出的那样,解决方案是autoreconf -fi
或类似的。由于您从中得到错误,您应该查看是否有一个 autogen.sh
或 bootstrap.sh
脚本应该将正确的 -I
参数集传递给它。
虽然“不使用 Automake”听起来可能比一般项目更奇怪。
【讨论】:
以上是关于config/config.guess 被符号链接到第三方包中的错误文件的主要内容,如果未能解决你的问题,请参考以下文章