【问题标题】:Autoconf: Testing whether gcc -m32 works AX_CHECK_COMPILE_FLAG doesn't solve itAutoconf:测试 gcc -m32 是否有效 AX_CHECK_COMPILE_FLAG 不能解决它
【发布时间】:2016-09-09 01:02:04
【问题描述】:

我想测试一下系统是否完全支持 gcc -m32。我尝试使用 AX_CHECK_COMPILE_FLAG([-m32], ..., ...)。那个测试没有做我想做的事情。似乎测试 -m32 是否是 gcc 的有效选项,NOT 它实际上可以编译代码。

我知道如果我测试 -m33 则 AX_CHECK_COMPILE_FLAG 正确地表示没有预期的 -m33 选项。

在这个特定的系统上,编译一个简单的 hello world 程序会执行以下操作:

$ gcc -m32 -c hello.c

 In file included from /usr/include/features.h:385,
                  from /usr/include/stdio.h:28,
                  from hello.c:1:
 /usr/include/gnu/stubs.h:7:27: error: gnu/stubs-32.h: No such file or directory

并返回非零状态。这种非零状态是我希望能够测试的。

【问题讨论】:

  • 您使用的是[SUCCESS][FAILURE][INPUT] 参数吗?
  • 是的,我是。查看我对我的问题的回答

标签: gcc 32-bit autoconf


【解决方案1】:

我能够找到问题的解决方案。基本上,我进行了 AX_CHECK_COMPILE_FLAG 测试并将内部更改为使用 AC_RUN_IFELSE 而不是 AC_COMPILE_IFELSE。我已将名称更改为 AX_TEST_COMPILE_FLAG,这是如何使用它:

AX_TEST_COMPILE_FLAG([-m32],[HAVE_32BIT=yes],[HAVE_32BIT=no])

这是定义:

AC_DEFUN([AX_TEST_COMPILE_FLAG],
[AC_PREREQ(2.64)dnl for _AC_LANG_PREFIX and AS_VAR_IF
AS_VAR_PUSHDEF([CACHEVAR] [ax_cv_check_[]_AC_LANG_ABBREV[]flags_$4_$1])dnl
AC_CACHE_CHECK([whether _AC_LANG compiler can build and run with $1], CACHEVAR, [
  ax_check_save_flags=$[]_AC_LANG_PREFIX[]FLAGS
  _AC_LANG_PREFIX[]FLAGS="$[]_AC_LANG_PREFIX[]FLAGS $4 $1"
  AC_RUN_IFELSE([m4_default([$5],[AC_LANG_PROGRAM()])],
    [AS_VAR_SET(CACHEVAR,[yes])],
    [AS_VAR_SET(CACHEVAR,[no])])
  _AC_LANG_PREFIX[]FLAGS=$ax_check_save_flags])
AS_VAR_IF(CACHEVAR,yes,
  [m4_default([$2], :)],
  [m4_default([$3], :)])
AS_VAR_POPDEF([CACHEVAR])dnl
])dnl AX_CHECK_COMPILE_FLAGS

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-26
    • 2011-02-06
    • 1970-01-01
    • 2015-02-28
    • 2016-04-29
    • 2011-05-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多