【问题标题】:How to ease support for cross-compilation with autoconf如何使用 autoconf 简化对交叉编译的支持
【发布时间】:2012-09-27 15:12:21
【问题描述】:
我维护了一个包自动配置,它使用PKG_CHECK_MODULES 来查找我的代码所依赖的库。我想让那些希望交叉编译我的包的人更容易:PKG_CHECK_MODULES 的主要问题是它获取 BUILD 系统信息而不是 HOST。
我的做法是:我不使用HOST系统的rootfs,而是分别编译我的包所依赖的每个包。然后,我希望能够在调用./configure srcipt 时强制使用DEPENDSON_LIBS 或DEPENDSON_CFLAGS 的值。这是一个好方法吗?如何编写 configure.in 来允许这样做?
注意:我尝试AC_ARG_VAR 没有成功...
【问题讨论】:
标签:
configuration
autoconf
【解决方案1】:
PKG_CHECK_MODULES 首先检查<i>host-prefix</i>-pkg-config 是否存在,然后回退到无前缀的pkg-config(这可能会产生令人困惑的结果)。
我不确定我是否理解您的方法(第二段),但无论如何我都会为用户设置正确的路径。您可以在PKG_CHECK_MODULES 之后添加AC_CHECK_LIB 以检查选择的库是否与编译器适用于同一系统。
进行交叉编译的用户可能已经安装了<i>host-prefix</i>-pkg-config,例如一些Linux发行版除了MinGW交叉编译器之外还打包了它。
如果没有,设置适当的环境就足够了。变量。 Autotools Mythbuster 推荐wrapper that sets these variables。
万不得已,用户可以直接设置*_CFLAGS和*_LIBS。