क्यों लक्ष्य में `अज्ञात` दिखाएं: आर्क लिनक्स में x86_64-अज्ञात-लिनक्स-गन्नू?


12

मैं जानना चाहूंगा कि जब मैं gcc -vआर्क लिनक्स के तहत चलता हूं , तो यह unknownइन आउटपुट में शब्द दिखाता है :

Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-unknown-linux-gnu/5.1.0/lto-wrapper
Target: x86_64-unknown-linux-gnu

अन्य डिस्ट्रो में, ubuntu की तरह, यह डिस्ट्रो का नाम दिखाता है, जैसे ubuntu:

 Using built-in specs.
 COLLECT_GCC=gcc
 COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-ubuntu-linux-gnu/5.1.0/lto-wrapper
 Target: x86_64-ubuntu-linux-gnu

आपने यह gcc कहाँ से स्थापित किया?
फहीम मीठा

gcccoreजब मैं आर्क स्थापित कर रहा था तब पैकेजों के साथ इंस्टॉल किया गया था।
noslin005

ठीक। शायद उस पैकेज के लिए संकलन निर्देशों की जांच करें?
फहीम मीठा

जवाबों:


8

जैसा कि यह पहले ही टिप्पणी में उल्लेख किया गया था, डिफ़ॉल्ट रूप से लक्ष्य triplet config.guess स्क्रिप्ट द्वारा उत्पन्न होता है । यह तर्क काफी सरल है। पहले यह unameकुछ बुनियादी सिस्टम जानकारी प्राप्त करने के लिए उपयोग करता है:

UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown
UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown
UNAME_SYSTEM=`(uname -s) 2>/dev/null`  || UNAME_SYSTEM=unknown
UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown

ये तार संयुक्त होते हैं और हार्डकोड पैटर्न के खिलाफ मेल खाते हैं। परिणाम भी हार्डकोड किया गया है:

case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
...(snip)...
    x86_64:Linux:*:*)
        echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
...(snip)...

कुछ प्रणालियों के लिए अधिक सार्थक परिणाम देना संभव है, जैसे "rs6000-ibm-aix" में IBM।

वितरण अनुरक्षक केवल अपने स्वयं के साथ इस स्ट्रिंग को ओवरराइड करते हैं (हार्डकोड भी):

$ gcc -v
...(snip)...
Target: x86_64-linux-gnu
Configured with: ../src/configure -v --with-pkgversion='Debian 4.9.2-10'
...(snip)...
--target=x86_64-linux-gnu

जीसीसी 6 शायद डिफ़ॉल्ट रूप से x86_64-pc-linux-gnu आउटपुट करेगा: अपस्ट्रीम रिपॉजिटरी में नवीनीकृत config.guess


कमाल है कि जीसीसी 6 विकसित हो रहा है।
अक्जेंट्री

OMG, इसलिए unknownडिफ़ॉल्ट रूप से हार्डकोड किया गया है।
अक्जेंट्री

4

यह कॉन्फ़िगरेशन / लक्ष्य ट्रिपलेट का कारख़ाना भाग है। Autobook उस के बारे में कहते हैं:

manufacturer
   A somewhat freeform field which indicates the manufacturer of the system. This is often simply `unknown'. Other common strings are `pc' for an IBM PC compatible system, or the name of a workstation vendor, such as `sun'.

Autoconf मैनुअल कॉल company

मैं GCC के संकलन में कोई विशेषज्ञ नहीं हूं, लेकिन ऐसा लगता है कि उस क्षेत्र द्वारा दी गई जानकारी सूचनात्मक प्रकृति की अधिक है और unknownकेवल डिफ़ॉल्ट मान GCC का उपयोग करता है जब तक कि स्पष्ट रूप से ओवरराइट नहीं किया जाता है। उदाहरण के लिए x86_64-linux-gnu, डेबियन 7s GCC i486-linux-gnu, उबंटू 12.04 पर जीसीसी है , इसलिए मैदान को खाली छोड़ना पूरी तरह से संभव है।


तो इतना ही है। x86_64-linux-gnuविविधता शॉर्टकट लक्ष्य कर रहे हैं, के लिए खड़े x86_64-unknown-linux-gnuया x86_64-pc-linux-gnugcc -vवह लक्ष्य दिखाता है जिसे इसके लिए संकलित किया गया था, और config.subविहित त्रैमासिक देता है ( स्थापित के /usr/share/miscसाथ डेबियन-व्युत्पन्न सिस्टम पर इसके लिए देखें autotools-dev)।
स्टीफन किट
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.