问题描述
我正在尝试修改现有的configure.ac文件。我想在FreeBSD系统上编译一些软件。基本系统包括binutils 2.17.5,但是我也从端口安装了较新的binutils 2.33.1。因此,系统上存在相同软件的多个版本。我希望autoconf使用位于2.3.3.1版本的/ usr / local / bin / as处的汇编程序,但是当前它在/ usr / bin / as处找到并使用旧的2.17.5版本的汇编程序。结果,该软件无法编译。
由于用户可以在Linux,FreeBSD或其他OS上运行autoconf,因此配置阶段必须足够灵活以找到正确的版本,而不管操作系统是什么—不仅仅是我正在使用的FreeBSD系统
当前代码段是
AC_CHECK_PROGS([AS],[i386-elf-as as])
if test -z "$AS"; then
AC_MSG_ERROR(as not found)
fi
如何修改此configure.as文件以获得所需的结果?
解决方法
AC_CHECK_PROGS
完全按照its docs的说明进行操作:它将在路径中查找指定的程序名称 。但是,如果您要使用的工具不同于路径搜索会发现的工具,则文档也会说
可以通过设置
variable
变量来覆盖此测试的结果
换句话说,如果configure
在其环境中找到预定义的变量AS
,则它将使用该变量而不是执行搜索。 configure --help
的输出甚至应在有影响力的环境变量中提及AS。这是一种机制,使用户可以覆盖configure
的默认选择。
您完全不需要修改configure
即可实现。
此外,关于
由于用户可能在Linux,FreeBSD或其他操作系统上运行autoconf 操作系统,配置阶段需要足够灵活才能找到 不论使用什么操作系统,都可以使用的正确版本-不仅仅是 我正在使用的FreeBSD系统。
很少在同一系统上安装多个版本的工具,例如as
,并且使用非默认工具(根据系统的默认路径判断)构建软件是一项专家活动。 。因此,我认为过度尝试过度尝试自动选择合适的组装程序是一种练习。