gcc нераспознанные параметры командной строки '-V' и '-qversion' с autoconf

22918
syrinx

При компиляции с 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. Это для других компиляторов?

9

2 ответа на вопрос

9
steady rain

Citing this:

gcc -V is a way of selecting a specific gcc version when you have more than one, that's a decoy here though: configure is iterating through a set of options (--version -v -V etc.) to make sure it can log the version of the C compiler, be it gcc or something else.

Citing this:

gcc used to have a -V option for version reports. It now uses -v, and provides the configuration options used when the compiler was built.

You package is a bit dated and doesn't reflect that fact.

BTW, the -qversion option was merged into the -v...

Citing this:

On some versions of gcc, the -V option tells it to use a specified version of the compiler -- but it requires an argument. It's documented here. The option appears to have been removed some time between 4.5.4 and 4.6.4.

which references this:

0
Oleg Kokorin

современный autoconf версии 2.69 может использоваться со следующим расширенным методом извлечения информации компилятора:

# Provide some information about the compiler.  $as_echo "$as_me:$: 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:$: $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:$: \$? = $ac_status" >&5  if test $ac_status = 0; then break; fi}  done  

уже принято использовать флаги извлечения как современных, так и устаревших версий. исправление находится в самой последней строке, позволяющей пропустить тестирование после первого успеха.

Похожие вопросы