我正在尝试为开源项目调试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
答案 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的定义。