带有autoconf的gcc无法识别的命令行选项'-V'和'-qversion'


15

当使用gcc 4.7.2和autoconf 2.69进行编译时,我通常会在configure.log中获得诸如此类的结果。例:

configure:3091: $? = 0 
configure:3080: gcc -V >&5 
gcc: error: unrecognized command line option '-V' 
gcc: fatal error: no input files compilation terminated. 
configure:3091: $? = 1 
configure:3080: gcc -qversion >&5 
gcc: error: unrecognized command line option '-qversion' 
gcc: fatal error: no input files compilation terminated. 
configure:3091: $? = 1 
configure:3111: checking whether the C compiler works 
configure:3133: gcc -march=x86-64 -mtune=generic -Os -pipe -Wl,-O1 conftest.c >&5
configure:3137: $? = 0 
configure:3185: result: yes

编译成功进行,但是我想知道为什么autoconf在测试gcc不支持的命令行。这是其他编译器吗?

Answers:


11

引用此:

gcc -V是当您有多个gcc版本时选择特定gcc版本的一种方法,尽管这是一个诱饵:configure正在遍历一组选项(--version -v -V等)以确保它可以记录C编译器的版本,无论是gcc还是其他。

引用此:

gcc以前有-V选项用于版本报告。现在,它使用-v,并提供构建编译器时使用的配置选项。

您的包裹有些陈旧,不能反映这个事实。

顺便说一句,-qversion选项已合并到-v ...

引用此:

在某些版本的gcc上,-V选项告诉它使用编译器的指定版本-但它需要一个参数。它记录在这里。该选项似乎在4.5.4和4.6.4之间已被删除。

引用此:


1

现代autoconf版本2.69可与以下扩展的编译器信息提取方法一起使用:

# Provide some information about the compiler.
$as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5
set X $ac_compile
ac_compiler=$2
for ac_option in --version -v -V -qversion; do
  { { ac_try="$ac_compiler $ac_option >&5"
case "(($ac_try" in
  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
  *) ac_try_echo=$ac_try;;
esac
eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
$as_echo "$ac_try_echo"; } >&5
  (eval "$ac_compiler $ac_option >&5") 2>conftest.err
  ac_status=$?
  if test -s conftest.err; then
    sed '10a\
... rest of stderr output deleted ...
         10q' conftest.err >conftest.er1
    cat conftest.er1 >&5
    rm -f conftest.er1 conftest.err
  fi
  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
  if test $ac_status = 0; then break; fi}
done

它已经可以尝试使用现代版本和旧版本提取标志。修复程序位于最后一行,可以在第一次成功后跳过测试。


“ G-Man说'恢复莫妮卡'”偷了我的剪辑。你太无耻了。
okwap
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.