autotools临时文件

时间:2011-08-26 16:03:40

标签: autotools autoconf

我正在尝试为开源项目调试autotools问题,这在配置步骤失败了。我想看看配置的代码/可执行文件正在尝试运行。

然而,config.log只显示失败的东西(不是它试图编译的代码),我不知道临时可执行文件的存储位置(并且它们可能会被及时删除)。

有没有办法让autotools保留其临时文件?在指定的级别无关紧要 - 无论是使用args进行配置,还是在生成configure时使用args到autoconf,或者甚至进行一些m4调用。

编辑当出现故障时,configure.log如下所示:

configure:3285: checking whether we are cross compiling
configure:3293: gcc -o conftest.exe -DU_STATIC_IMPLEMENTATION -O3   conftest.c  >&5
configure:3297: $? = 0
configure:3304: ./conftest
configure:3308: $? = 1
configure:3315: error: in `/home/bobthebuilder/Development/icu/build':
configure:3317: error: cannot run C compiled programs.
If you meant to cross compile, use `--host'.
See `config.log' for more details

1 个答案:

答案 0 :(得分:10)

这是一个完整的黑客攻击,但它确实有效。您可以编辑配置脚本;具体来说,您可以编辑子例程ac_fn_c_try_compile ()。在configure脚本中搜索此行,然后在ac_fn_c_try_compile的初始声明后立即添加这些行进行编辑:

ac_fn_c_try_compile ()
{
  echo "=================== " >> config.log
  echo "conftest.$ac_ext is " >> config.log
  cat conftest.$ac_ext >> config.log 
  echo "=================== " >> config.log

每次都会强制conftest。$ ac_ext(即conftest.c)打印到config.log文件。请记住,每次重新运行autoconf(如果这样做)或autoreconf时,都会覆盖此自定义配置脚本。可能有一种方法可以劫持ac_fn_c_try_compile的定义。