गैर-मान्यताप्राप्त कमांड लाइन विकल्प '-V' और ऑटोकॉन्फ़ के साथ -qversion '


16

जब gcc 4.7.2 और autoconf 2.69 के साथ संकलित किया जाता है, तो मैं नियमित रूप से config.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

संकलन सफलतापूर्वक आगे बढ़ता है, लेकिन मैं सोच रहा हूं कि ऑटोकैफ कमांड लाइनों के लिए परीक्षण क्यों कर रहा है जो कि जीसीसी का समर्थन नहीं करता है। क्या यह अन्य संकलक के लिए है?

जवाबों:


11

इसका हवाला देते हुए:

gcc -V एक विशिष्ट gcc संस्करण का चयन करने का एक तरीका है जब आपके पास एक से अधिक है, तो यह एक फंदा है, हालांकि: कॉन्फ़िगर यह विकल्प (--vv -v -V आदि) के एक सेट के माध्यम से पुनरावृत्ति कर रहा है, यह सुनिश्चित करने के लिए कि यह लॉग कर सकता है। सी कंपाइलर का संस्करण, यह gcc या कुछ और हो।

इसका हवाला देते हुए:

gcc में संस्करण रिपोर्ट के लिए -V विकल्प हुआ करता था। यह अब -v का उपयोग करता है, और संकलक के निर्माण के समय उपयोग किए गए कॉन्फ़िगरेशन विकल्प प्रदान करता है।

आप पैकेज थोड़ा सा दिनांकित है और इस तथ्य को प्रतिबिंबित नहीं करता है।

BTW, -qversion विकल्प -v में विलय कर दिया गया ...

इसका हवाला देते हुए:

Gcc के कुछ संस्करणों पर, -V विकल्प इसे संकलक के निर्दिष्ट संस्करण का उपयोग करने के लिए कहता है - लेकिन इसके लिए एक तर्क की आवश्यकता होती है। यह यहाँ प्रलेखित है। ऐसा प्रतीत होता है कि विकल्प 4.5.4 और 4.6.4 के बीच कुछ समय के लिए हटा दिया गया है।

इस संदर्भ में:


1

आधुनिक ऑटोकॉन्फ़ संस्करण 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

यह पहले से ही आधुनिक और साथ ही विरासत संस्करण निष्कर्षण झंडे को आजमाने के लिए अनुकूलित है। फिक्स बहुत अंतिम पंक्ति में है, 1 सफलता के बाद परीक्षण को छोड़ने की अनुमति देता है।


"जी-मैन ने कहा कि 'मोनिका को बहाल करो" ने मेरा संपादन चुरा लिया। तुम्हे शर्म आनी चाहिए।
19 को ठीक करें
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.