自动工具临时文件

标签 autotools autoconf

我正在尝试调试开源项目的自动工具问题,该项目在配置步骤中失败。我想查看配置尝试运行的代码/可执行文件。

但是,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/

相关文章:

Homebrew 安装到主目录 - 如何链接到 autoconf 中的库?

bash - 带空格的 Shell 变量,引用单个命令行选项

c++ - Autoconf 没有正确定义变量

c - autotools,如果找不到交叉编译器如何失败

build-process - 如何针对另一个未安装的 autotools 项目构建一个 autotools 项目?

c++11 - AX_CXX_COMPILE_STDCXX_11 不起作用 : syntax error near unexpected token `,'

c - 转换为 libtool 时 automake 和 autoconf 找不到 libtool

macos - 已安装 libtool 但未找到 libtoolize

configuration - 如何在 Autotools 中添加和实现配置标志?

c - libreadline.so.7 : undefined symbol: UP