टी एल; डॉ
सुनिश्चित करें कि आपने नवीनतम 'कमांड लाइन टूल' पैकेज डाउनलोड किया है और इसे टर्मिनल (कमांड लाइन) से चलाया है:
open /Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg
कैटालिना के बारे में कुछ जानकारी के लिए, कैटालिना को 10.15 में अपग्रेड करने के बाद एक मैक पर एक सी प्रोग्राम संकलित नहीं कर सकते ।
बल्कि व्यापक टिप्पणियों से एक अर्ध-सुसंगत उत्तर निकालना ...
प्रस्तावना
बहुत बार, xcode-select --install
सही समाधान किया गया है, लेकिन यह इस समय मदद नहीं करता है। क्या आपने मुख्य Xcode GUI इंटरफ़ेस चलाने की कोशिश की है? यह आपके लिए कुछ अतिरिक्त सॉफ़्टवेयर स्थापित कर सकता है और सफाई कर सकता है। मैंने ऐसा Xcode 10.0 स्थापित करने के बाद किया था, लेकिन एक सप्ताह या उससे अधिक समय पहले, Mojave में अपग्रेड करने से बहुत पहले।
मैं देखता हूं कि यदि आपका GCC स्थापित है /usr/local/bin
, तो आप शायद Xcode से GCC का उपयोग नहीं कर रहे हैं; यह सामान्य रूप से स्थापित है /usr/bin
।
मैंने भी macOS 10.14 Mojave और Xcode 10.0 में अपडेट किया है। हालांकि, सिस्टम /usr/bin/gcc
और सिस्टम दोनों /usr/bin/clang
मेरे लिए काम कर रहे हैं ( Apple LLVM version 10.0.0 (clang-1000.11.45.2) Target: x86_64-apple-darwin18.0.0
दोनों के लिए।) मुझे अपने घर-निर्मित जीसीसी 8.2.0 में हेडर नहीं ढूंढने में /usr/include
समस्या है, जो /usr/local/bin/gcc
हेडर नहीं ढूंढने के साथ आपकी समस्या के समानांतर है ।
मैंने थोड़ी तुलना की है, और मेरी मोजाव मशीन /usr/include
में बिल्कुल भी नहीं /usr/bin/clang
है , फिर भी ठीक संकलन करने में सक्षम है। एक हेडर ( _stdio.h
, प्रमुख अंडरस्कोर के साथ) मेरे पुराने में था /usr/include
; यह अब गायब है (इसलिए जीसीसी 8.2.0 के साथ मेरी समस्या)। मैं भागा xcode-select --install
और उसने कहा " xcode-select: note: install requested for command line developer tools
" और फिर एक GUI इंस्टॉलर चला, जिसने मुझे एक लाइसेंस दिखाया, जिसके लिए मैं सहमत हो गया, और उसने कमांड लाइन टूल डाउनलोड किया और इंस्टॉल किया - या ऐसा दावा किया।
मैंने फिर Xcode GUI (कमांड-स्पेस, Xcode, रिटर्न) चलाया और यह कहा कि इसे कुछ और सॉफ़्टवेयर इंस्टॉल करने की आवश्यकता है, लेकिन फिर भी नहीं /usr/include
। लेकिन मैं /usr/bin/clang
और के साथ संकलन कर सकता हूं /usr/bin/gcc
- और -v
विकल्प बताता है कि वे उपयोग कर रहे हैं
InstalledDir: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin
काम करने का उपाय
तब Maxxx ने उल्लेख किया :
मुझे एक रास्ता मिल गया है। यदि हम Xcode 10 का उपयोग कर रहे हैं, तो आप देखेंगे कि यदि आप /usr
खोजक में नेविगेट करते हैं , तो आपको 'फोल्डर' नामक कोई भी फ़ोल्डर दिखाई नहीं देगा, यही कारण है कि टर्मिनल हेडर फ़ाइलों की अनुपस्थिति की शिकायत करता है जो अंदर निहित है 'शामिल' फ़ोल्डर। में Xcode 10.0 रिलीज नोट्स , यह कहता है कि एक पैकेज है:
/Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg
और आपको उस पैकेज को /usr/include
फ़ोल्डर स्थापित करने के लिए स्थापित करना चाहिए । तब आपको जाना अच्छा होना चाहिए।
जब अन्य सभी विफल हो जाते हैं, तो मैनुअल पढ़ें या, इस मामले में, रिलीज नोट्स। मुझे डर नहीं लग रहा है कि Apple उनकी यूनिक्स धरोहर से मुंह मोड़ना चाहता है, लेकिन मैं निराश हूं। यदि वे सावधान रहें, तो वे मुझे भगा सकते हैं। जानकारी के लिए धन्यवाद।
कमांड लाइन पर निम्नलिखित कमांड का उपयोग करके पैकेज स्थापित करने के बाद, मेरे पास /usr/include
फिर से है, और मेरा जीसीसी 8.2.0 एक बार फिर काम करता है।
open /Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg
कमांड लाइन टूल डाउनलोड करना
जैसा कि वेसल एक बहुमूल्य टिप्पणी में बताते हैं , आपको मोजेज 10.14 पर Xcode 10.1 के लिए कमांड लाइन टूल पैकेज डाउनलोड करने की आवश्यकता है, और आप ऐसा कर सकते हैं:
डाउनलोड प्राप्त करने में सक्षम होने के लिए आपको एक Apple ID के साथ लॉगिन करना होगा। जब आपने डाउनलोड कर लिया है, तो कमांड लाइन टूल पैकेज स्थापित करें। फिर अनुभाग 'वर्किंग सॉल्यूशन' में वर्णित हेडर को स्थापित करें।
यह मेरे लिए Mojave 10.14.1 पर काम किया। मैंने इसे पहले डाउनलोड कर लिया होगा, लेकिन जब तक मैं इस प्रश्न का उत्तर दे रहा था, तब तक मैं भूल चुका था।
Mojave 10.14.4 और Xcode 10.2 पर अपग्रेड करें
2019-05-17 को या इसके बाद, मैंने Mojave 10.14.4 को अपडेट किया, और Xcode 10.2 कमांड लाइन टूल भी अपग्रेड किए गए (या Xcode 10.1 कमांड लाइन टूल 10.2 में अपग्रेड किए गए)। open
आदेश दिखाया ऊपर लापता हेडर तय की। मुख्य Xcode को 10.2 में अपग्रेड करने के साथ आने के लिए अभी भी रोमांच हो सकता है और फिर कमांड लाइन टूल और हेडर पैकेज को फिर से इंस्टॉल करना है।
Xcode 10.3 पर अपग्रेड करें (Mojave 10.14.6 के लिए)
2019-07-22 को, मुझे ऐप स्टोर के माध्यम से सूचना मिली कि Xcode 10.3 में अपग्रेड उपलब्ध है और इसमें iOS 12.4, tvOS 12.4, watchOS 5.3 और macOS Mojave 10.14.6 के लिए SDKs शामिल हैं। मैंने इसे अपनी 10.14.5 मशीनों में से एक में स्थापित किया, और इसे चलाया, और अतिरिक्त घटकों को स्थापित किया जैसा कि यह सुझाव दिया गया था, और ऐसा लगता है कि यह /usr/include
बरकरार है।
उसी दिन बाद में, मुझे पता चला कि MacOS Mojave 10.14.6 भी उपलब्ध था (सिस्टम प्राथमिकताएँ Update सॉफ़्टवेयर अपडेट), कमांड लाइन यूटिलिटीज़ पैकेज IIRC के साथ (यह स्वचालित रूप से डाउनलोड और इंस्टॉल किया गया था)। ओ / एस अपडेट को स्थापित करते हुए, एक बार और, मिटा दें /usr/include
, लेकिन open
उत्तर के शीर्ष पर स्थित कमांड ने इसे फिर से बहाल कर दिया। मेरे पास open
कमांड के लिए फाइल पर तारीख 2019-07-15 थी।
XCode 11.0 (कैटालिना 10.15 के लिए) में अपग्रेड करें
XCode 11.0 के उन्नयन ("iOS 13 के लिए स्विफ्ट 5.1 और एसडीके शामिल हैं, टीवीओएस 13, वॉचओएस 6 और मैकओएस कैटलिना 10.15") 2019-09-21 जारी किया गया था। मुझे 'अपडेट उपलब्ध' के बारे में सूचित किया गया था, और बिना किसी समस्या के, ऐप स्टोर ऐप (अपडेट टैब) के माध्यम से मैकओएस मोजेज 10.14.6 पर चलने वाली मशीनों पर इसे डाउनलोड और इंस्टॉल किया गया, और इसके साथ फ्यूज़ किए बिना /usr/include
। स्थापना के तुरंत बाद (स्वयं एप्लिकेशन को चलाने से पहले), मैंने एक पुनः प्रयास किया और बताया गया:
Xcode / iOS लाइसेंस के लिए सहमत होने के लिए व्यवस्थापक विशेषाधिकारों की आवश्यकता होती है, कृपया "sudo xcodebuild -license" चलाएं और फिर इस कमांड को पुनः प्रयास करें।
उस ( sudo xcodebuild -license
) को चलाने से मुझे कंपाइलर चलाने की अनुमति मिली। तब से, मैंने एप्लिकेशन को अतिरिक्त घटकों को स्थापित करने के लिए चलाया है, जिनकी ज़रूरत है; अभी भी कोई समस्या नहीं है। यह देखा जाना चाहिए कि जब मैं कैटालिना में अपग्रेड करता हूं तो क्या होता है - लेकिन मेरे macOS Mojave 10.14.6 मशीनें फिलहाल (2019-09-24) दोनों ठीक हैं।
echo "#include <a.h>" | gcc -v -x c -