2016-05-13 124 views
0

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

我知道如果我测试-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 

,并返回一个非零状态。这个非零状态是我喜欢能够测试的。

+0

您使用的是'[SUCCESS]','[故障]',' [INPUT]参数? –

+0

是的,我是。看到我的问题的答案 – user2410881

回答

0

我能找到问题的解决方案。基本上,我进行了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