gcc ตัวเลือกบรรทัดคำสั่งที่ไม่รู้จัก '-V' และ '-qversion' พร้อม autoconf


16

เมื่อทำการคอมไพล์ด้วย 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 ไม่สนับสนุน นี่สำหรับคอมไพเลอร์อื่น ๆ หรือไม่?

คำตอบ:


11

อ้างถึงสิ่งนี้:

gcc-V เป็นวิธีการเลือกรุ่น gcc ที่เฉพาะเจาะจงเมื่อคุณมีมากกว่าหนึ่งนั่นคือล่อที่นี่แม้ว่า: กำหนดค่าจะวนซ้ำผ่านชุดของตัวเลือก (--version -v -V ฯลฯ ) เพื่อให้แน่ใจว่ามันสามารถเข้าสู่ระบบ เวอร์ชันของคอมไพเลอร์ C ไม่ว่าจะเป็น gcc หรืออย่างอื่น

อ้างถึงสิ่งนี้:

gcc เคยมีตัวเลือก -V สำหรับรายงานเวอร์ชัน ตอนนี้ใช้ -v และจัดเตรียมอ็อพชันการกำหนดคอนฟิกที่ใช้เมื่อคอมไพเลอร์ถูกสร้าง

แพ็คเกจของคุณค่อนข้างเก่าและไม่ได้สะท้อนข้อเท็จจริงดังกล่าว

BTW ตัวเลือก -qversion ถูกรวมเข้ากับ -v ...

อ้างถึงสิ่งนี้:

ในบางรุ่นของ gcc ตัวเลือก -V บอกให้ใช้คอมไพเลอร์เวอร์ชั่นที่ระบุ - แต่มันต้องการอาร์กิวเมนต์ มันเป็นเอกสารที่นี่ ตัวเลือกดูเหมือนจะถูกลบบางช่วงเวลาระหว่าง 4.5.4 และ 4.6.4

ซึ่งอ้างอิงสิ่งนี้:


1

Modern 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 พูดว่า 'Reinstate Monica'" ขโมยการแก้ไขของฉัน อับอายกับคุณ
okwap
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.