Autoconf:测试 gcc -m32 是否有效 AX_CHECK_COMPILE_FLAG 没有解决问题
Autoconf: Testing whether gcc -m32 works AX_CHECK_COMPILE_FLAG doesn't solve it
我想测试一下系统是否完全支持 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
和 returns 非零状态。这种非零状态是我希望能够测试的。
我找到了解决问题的方法。基本上,我进行了 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__])dnl
AC_CACHE_CHECK([whether _AC_LANG compiler can build and run with ], CACHEVAR, [
ax_check_save_flags=$[]_AC_LANG_PREFIX[]FLAGS
_AC_LANG_PREFIX[]FLAGS="$[]_AC_LANG_PREFIX[]FLAGS "
AC_RUN_IFELSE([m4_default([],[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([], :)],
[m4_default([], :)])
AS_VAR_POPDEF([CACHEVAR])dnl
])dnl AX_CHECK_COMPILE_FLAGS
我想测试一下系统是否完全支持 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
和 returns 非零状态。这种非零状态是我希望能够测试的。
我找到了解决问题的方法。基本上,我进行了 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__])dnl
AC_CACHE_CHECK([whether _AC_LANG compiler can build and run with ], CACHEVAR, [
ax_check_save_flags=$[]_AC_LANG_PREFIX[]FLAGS
_AC_LANG_PREFIX[]FLAGS="$[]_AC_LANG_PREFIX[]FLAGS "
AC_RUN_IFELSE([m4_default([],[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([], :)],
[m4_default([], :)])
AS_VAR_POPDEF([CACHEVAR])dnl
])dnl AX_CHECK_COMPILE_FLAGS