我正在尝试调试开源项目的自动工具问题,该项目在配置步骤中失败。我想查看配置尝试运行的代码/可执行文件。
但是,config.log 仅显示某些内容失败(而不是它尝试编译的代码),并且我不知道临时可执行文件存储在哪里(而且它们可能会立即被删除)。
有没有办法让自动工具保留其临时文件?在哪个级别指定它并不重要——无论是使用要配置的参数,还是在生成配置时使用自动配置的参数,甚至是一些 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
最佳答案
这是一个完整的黑客攻击,但它确实有效。您可以编辑配置脚本;具体来说,您可以编辑子例程ac_fn_c_try_compile ()
。在配置脚本中搜索此行,然后通过在 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
的定义。
关于自动工具临时文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7207525/