gcc opsi baris perintah yang tidak dikenal '-V' dan '-qversion' dengan autoconf


15

Ketika mengkompilasi dengan gcc 4.7.2 dan autoconf 2.69, saya secara rutin mendapatkan hasil seperti ini di configure.log. Contoh:

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

Kompilasi berjalan dengan sukses, tetapi saya bertanya-tanya mengapa autoconf sedang menguji untuk baris perintah yang tidak didukung gcc. Apakah ini untuk kompiler lain?

Jawaban:


11

Mengutip ini:

gcc -V adalah cara untuk memilih versi gcc tertentu ketika Anda memiliki lebih dari satu, itu adalah umpan di sini: configure adalah iterasi melalui serangkaian opsi (--version -v -V dll) untuk memastikan ia dapat login versi dari kompiler C, baik itu gcc atau yang lainnya.

Mengutip ini:

gcc dulu memiliki opsi -V untuk laporan versi. Sekarang menggunakan -v, dan menyediakan opsi konfigurasi yang digunakan ketika kompiler dibangun.

Paket Anda sedikit tanggal dan tidak mencerminkan fakta itu.

BTW, opsi -qversi digabung ke ...

Mengutip ini:

Pada beberapa versi gcc, opsi -V memberitahukannya untuk menggunakan versi kompilator yang ditentukan - tetapi membutuhkan argumen. Sudah didokumentasikan di sini. Opsi ini tampaknya telah dihapus beberapa waktu antara 4.5.4 dan 4.6.4.

yang mereferensikan ini:


1

Modern autoconf versi 2.69 dapat digunakan dengan metode ekstraksi informasi kompiler diperpanjang berikut:

# 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

Ini sudah disesuaikan untuk mencoba bendera ekstraksi versi modern maupun warisan. Perbaikan ada di baris terakhir, memungkinkan untuk melewati pengujian setelah sukses pertama.


"G-Man Mengatakan 'Reinstate Monica'" mencuri hasil editku. Tidak tahu malu.
okwap
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.