我正在尝试修补一个configure.in文件,以便能够对某个包进行交叉编译。到目前为止,我只对AC_TRY_RUN宏打了补丁,使它们能够跳过编译代码的执行,并使用包含测试结果的预定义变量,这应该是先验运行的。
在文件的开头,我插入了如下几行:
dnl -- The following block is used to allow cross-compilation:
CROSSCTEST00=yes dnl -- the result of test 0
CROSSCTEST01=yes dnl -- the result of test 1
...
CROSSCTESTNN=yes dnl -- the result of test N
dnl --
dnl This is where this file started previously:
AC_INIT(pl-wam.c)
AC_PREREQ([2.66])
AC_CONFIG_HEADER(config.h)
AC_SUBST(COFLAGS)
AC_SUBST(CWFLAGS)
... 然后,我像这样使用AC_TRY_RUN的第四个参数:
AC_TRY_RUN([ // piece of C code ],
[actions if exit(0)],
[actions if exit(1)],
if test "x$CROSSCTEST00" = xyes; then
dnl same actions if exit(0)
else
dnl same actions if exit(1)
fi)但它不起作用。尽管$CROSSCTEST是yes,但test ...从来都不是真的。我也尝试了另一种方法:
AC_TRY_RUN([ // piece of C code ],
[actions if exit(0)],
[actions if exit(1)],
AS_IF([test "x$CROSSCTEST00" = xyes],
[same actions if exit(0)],
[dnl same actions if exit(1)]))...and它也不能工作。我是不是漏掉了什么?您认为有没有更好的方法来修补configure.in以启用交叉编译?
发布于 2014-06-15 22:12:12
在AC_INIT之前编写的configure.ac或configure.in中的行不会出现在配置脚本中。(查看生成的配置脚本,查看是否进行了分配。)您可能只需将您的赋值移到AC_INIT调用之后。但是对AC_INIT的调用已经非常过时了,而且在使用这样一个过时的调用时需要autoconf 2.66似乎很奇怪。( configure.in这个名字也很老套)。您可能想要考虑检查文件并查找过时的cruft,因为它可能需要彻底检查。(并明确将文件重命名为configure.ac)
https://stackoverflow.com/questions/23998232
复制相似问题