2016-05-13 123 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