c - মোজাভেতে আপগ্রেড করার পরে ম্যাকের সি প্রোগ্রাম কম্পাইল করতে পারবেন না




macos gcc (6)

আমি সি প্রোগ্রামগুলি সংকলনের জন্য টার্মিনালে জিসিসি কমান্ডটি ব্যবহার করেছি তবে হঠাৎ করেই আমার ম্যাকের ওএসের আপডেট (ম্যাকোস 10.14 মোজাভে, এবং এক্সকোড 10.0) করার পরে আমি বার্তাটি পেতে শুরু করেছি:

test.c:8:10: fatal error: stdio.h: No such file or directory
#include <stdio.h>
         ^~~~~~~~~
compilation terminated.

আমি ইতিমধ্যে জিসিসি ইনস্টল করেছি যেহেতু আমি এটি /usr/local/bin খুঁজে পেতে পারি এবং সেখানে সত্যিই একটি জিসিসি রয়েছে। আমি একই ফাইলটি আমার অন্যান্য আইম্যাকটিতে চালানোর চেষ্টা করেছি এবং এটি কোনও সমস্যা ছাড়াই কাজ করেছে।

আমি xcode-select --install ইনস্টল চালানোর চেষ্টা করেছি এবং এটি ইতিমধ্যে ইনস্টল করা হয়েছে, সুতরাং এটি এখন আমার যে সমস্যাটি রয়েছে তা ঠিক করে নি। আমি অনুমান করছি যে এই সমস্যাটি সমাধানের জন্য অন্যান্য উত্স থেকে কিছু কমান্ড অনুলিপি করা এবং আটকানো শুরু করার পরে এটি gcc খুঁজে পাবে বলে মনে হচ্ছে না যে পথটি gcc হয়েছে।

এই বিষয়ে কিছু সাহায্য চাই।


টি এল; ডিআর

নিশ্চিত হয়ে নিন যে আপনি সর্বশেষতম 'কমান্ড লাইন সরঞ্জাম' প্যাকেজটি ডাউনলোড করেছেন এবং এটি একটি টার্মিনাল (কমান্ড লাইন) থেকে চালনা করেছেন:

open /Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg

বরং বিস্তৃত মন্তব্যগুলি থেকে একটি আধা-সুসংগত উত্তর বের করা হচ্ছে ...

প্রস্তাবনা

খুব প্রায়শই, xcode-select --install সঠিক সমাধান হয়ে থাকে তবে এটি এই মুহুর্তে সাহায্য করবে বলে মনে হয় না। আপনি কি মূল Xcode GUI ইন্টারফেসটি চালানোর চেষ্টা করেছেন? এটি আপনার জন্য কিছু অতিরিক্ত সফ্টওয়্যার ইনস্টল করে পরিষ্কার করতে পারে। আমি এটি Xcode 10.0 ইনস্টল করার পরে করেছি, তবে এক সপ্তাহ বা আরও অনেক আগে মোজভেভে আপগ্রেড করার অনেক আগে।

আমি লক্ষ্য করেছি যে আপনার জিসিসি যদি /usr/local/bin ইনস্টল করা থাকে তবে আপনি সম্ভবত এক্সকোড থেকে জিসিসি ব্যবহার করছেন না; এটি সাধারণত /usr/bin ইনস্টল থাকে।

আমিও ম্যাকোস 10.14 মোজাভে এবং এক্সকোড 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 /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 করেছিলাম এবং এটিতে " xcode-select: note: install requested for command line developer tools " এবং তারপরে একটি জিইউআই ইনস্টলার চালিয়েছিল যা আমাকে একটি লাইসেন্স দেখিয়েছিল যা আমি সম্মত হয়েছিলাম এবং এটি কমান্ড লাইনটি ডাউনলোড করে ইনস্টল করেছে সরঞ্জাম - বা তাই এটি দাবি করেছে।

আমি তখন এক্সকোড জিইউআই (কমান্ড-স্পেস, এক্সকোড, রিটার্ন) চালিয়েছি এবং এটি বলেছে যে এর জন্য আরও কিছু সফ্টওয়্যার ইনস্টল করা দরকার, তবে এখনও /usr/include । তবে আমি /usr/bin/clang এবং /usr/bin/gcc সাথে সংকলন করতে পারি - এবং -v বিকল্পটি তাদের ব্যবহারের পরামর্শ দিচ্ছে

InstalledDir: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin

কাজ সমাধান

তারপরে noted :

আমি একটি উপায় খুঁজে পেয়েছি। যদি আমরা এক্সকোড 10 ব্যবহার করে থাকি তবে আপনি খেয়াল করবেন যে আপনি যদি ফাইন্ডারে /usr এ যান, আপনি আর 'অন্তর্ভুক্ত' নামে একটি ফোল্ডার দেখতে পাবেন না, যার কারণে টার্মিনালটি হেডার ফাইলগুলির অনুপস্থিতির অভিযোগ করে যা 'অন্তর্ভুক্ত' ফোল্ডারের ভিতরে থাকা contained developer.apple.com/documentation/xcode_release_notes/… এটি বলে যে এখানে একটি প্যাকেজ রয়েছে:

/Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg 

এবং আপনার /usr/include ফোল্ডার ইনস্টল করার জন্য সেই প্যাকেজটি ইনস্টল করা উচিত। তারপরে আপনার ভাল হওয়া উচিত।

যখন সমস্ত কিছু ব্যর্থ হয়, ম্যানুয়ালটি পড়ুন বা এই ক্ষেত্রে, রিলিজ নোটগুলি। আমি অ্যাপলকে তাদের ইউনিক্স heritageতিহ্যের দিকে ফিরে যেতে চেয়েছি তা দেখে আমি ভয়ঙ্করভাবে অবাক হই না, তবে আমি হতাশ। তারা যদি সাবধান হয় তবে তারা আমাকে তাড়িয়ে দিতে পারে। তথ্যের জন্য আপনাকে ধন্যবাদ.

কমান্ড লাইনে নিম্নলিখিত কমান্ডটি ব্যবহার করে প্যাকেজটি ইনস্টল করার পরে, আমি আবার /usr/include করেছি এবং আমার জিসিসি 8.2.0 আরও একবার কাজ করে।

open /Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg

কমান্ড লাইন সরঞ্জামগুলি ডাউনলোড করা

Vesal যেমন একটি মূল্যবান comment , আপনাকে মোজভে 10.14-তে এক্সকোড 10.1 এর জন্য কমান্ড লাইন সরঞ্জাম প্যাকেজটি ডাউনলোড করতে হবে এবং আপনি এটি থেকে এটি করতে পারেন:

ডাউনলোড পেতে সক্ষম হতে আপনাকে অ্যাপল আইডি দিয়ে লগইন করতে হবে। আপনি ডাউনলোডটি শেষ করার পরে, কমান্ড লাইন সরঞ্জাম প্যাকেজটি ইনস্টল করুন। তারপরে 'ওয়ার্কিং সলিউশন' বিভাগে বর্ণিত শিরোনামগুলি ইনস্টল করুন।

এটি মোজভেভ 10.14.1 এ আমার জন্য কাজ করেছে। আমি অবশ্যই এটি আগে ডাউনলোড করেছিলাম, তবে আমি এই প্রশ্নের উত্তর দেওয়ার সময়টি ভুলে গিয়েছিলাম।

মোজাভে 10.14.4 এবং এক্সকোড 10.2 এ আপগ্রেড করুন

2019-05-17 বা প্রায়, আমি মোজাভে 10.14.4 এ আপডেট করেছি এবং এক্সকোড 10.2 কমান্ড লাইন সরঞ্জামগুলিও আপগ্রেড করা হয়েছে (বা এক্সকোড 10.1 কমান্ড লাইন সরঞ্জামগুলি 10.2-তে উন্নীত করা হয়েছিল)। উপরে প্রদর্শিত open কমান্ডটি অনুপস্থিত শিরোনামগুলি স্থির করেছে। মূল এক্সকোডকে 10.2 এ আপগ্রেড করার সাথে সাথে কমান্ড লাইন সরঞ্জামগুলি এবং শিরোনাম প্যাকেজটি পুনরায় ইনস্টল করার জন্য এখনও অ্যাডভেঞ্চার থাকতে পারে।

এক্সকোড 10.3 এ উন্নীত করুন (মোজাভেভ 10.14.6 এর জন্য)

2019-07-22 এ আমি অ্যাপ স্টোরের মাধ্যমে বিজ্ঞপ্তি পেয়েছি যে এক্সকোড 10.3 এ আপগ্রেড উপলব্ধ এবং এটিতে আইওএস 12.4, টিভিএস 12.4, ওয়াচস 5.3 এবং ম্যাকোস মোজভেভ 10.14.6 এর এসডিকে অন্তর্ভুক্ত রয়েছে। আমি এটি আমার 10.14.5 মেশিনগুলির মধ্যে একটি ইনস্টল করেছিলাম এবং এটি চালিয়েছি এবং এটির পরামর্শ অনুসারে অতিরিক্ত উপাদান ইনস্টল করেছি এবং মনে হয় এটি /usr/include অক্ষত /usr/include

পরে একই দিন, আমি আবিষ্কার করেছি যে ম্যাকস মোজাভে 10.14.6 খুব কমান্ড লাইন ইউটিলিটিস প্যাকেজ আইআইআরসি সহ (সিস্টেমের পছন্দসমূহ ⟶ সফ্টওয়্যার আপডেট) উপলব্ধ ছিল (এটি ডাউনলোড এবং স্বয়ংক্রিয়ভাবে ইনস্টল হয়েছিল)। ও / গুলি আপডেট ইনস্টল করে, আরও একবার মুছে ফেলুন /usr/include , তবে উত্তরের উপরে থাকা open কমান্ডটি আবার এটি পুনঃস্থাপন করেছে। open কমান্ডের জন্য ফাইলটিতে আমার তারিখটি ছিল 2019-07-15।


আমি এই গিটহাব মন্তব্যটিতে দুর্দান্ত সমাধান এবং ব্যাখ্যা পেয়েছি। কৌশলটি:

make SDKROOT=`xcrun --show-sdk-path` MACOSX_DEPLOYMENT_TARGET=

কাজটি করেছেন।


আমি এখানে এবং অনলাইনে খুঁজে পেতে পারে এমন প্রতিটি উত্তর চেষ্টা করার পরেও আমি কিছু অনুপস্থিত শিরোলেখের জন্য ত্রুটি পেয়েছিলাম। পাইআরএফআর সংকলনের চেষ্টা করার সময়, আমি stdexcept না পাওয়া সম্পর্কে ত্রুটি পেয়েছি, যা সম্ভবত /usr/include এ অন্যান্য হেডারগুলির সাথে /usr/include ছিল না। যাইহোক, আমি এটি মোজভে কোথায় লুকিয়ে ছিল তা পেয়েছি এবং এটি আমার। ~/.bash_profile ফাইলের শেষে যুক্ত করেছি:

export CPATH=/Library/Developer/CommandLineTools/usr/include/c++/v1

এটি শেষ করে আমি এখন পাইআরএফআর এবং অন্যান্য সি / সি ++ প্রোগ্রামগুলি সংকলন করতে পারি। echo | gcc -E -Wp,-v - অনুসারে echo | gcc -E -Wp,-v - echo | gcc -E -Wp,-v - , gcc এই হেডারের জন্য পুরানো অবস্থানটি সন্ধান করছিল ( /c++/v1 ছাড়াই), তবে নতুন অবস্থান নয়, সুতরাং সিএফএলএগএসে এটি সংশোধন করে।


এক্সকোড পছন্দসমূহ -> অবস্থানগুলি চেক করতে ভুলবেন না।

আমি যে কমান্ড লাইন সরঞ্জামগুলি নির্বাচন করেছিলাম তা ছিল এক্সকোডের পূর্ববর্তী সংস্করণ (10.1 এর পরিবর্তে 8.2.1)


জোনাথন লেফলার উপরে উল্লেখ করেছেন যে ম্যাকোএসএসডিডি_হেডার্স.পিকিজি ফাইলটি আর এক্সকোড 10.1-এ নেই।

আমার জন্য যা কাজ করা হয়েছিল তা হ'ল brew upgrade এবং সিসি এবং / অথবা হোমব্রিউয়ের পর্দার আড়ালে থাকা যা কিছু ঘটেছিল তা পথের সমস্যার সমাধান করে।


সমস্যাটি হ'ল এক্সকোড, বিশেষত Xcode 10.x, সমস্ত কিছু ইনস্টল করেনি, সুতরাং কমান্ড লাইন সরঞ্জামগুলি ইনস্টল করা আছে কিনা তা নিশ্চিত করুন, এটি একটি টার্মিনাল শেলটিতে টাইপ করুন:

এক্সকোড-নির্বাচন - ইনস্টল

এছাড়াও এক্সকোড শুরু করুন এবং সমস্ত প্রয়োজনীয় ইনস্টলেশন ইনস্টল করা আছে তা নিশ্চিত করুন (এটি না থাকলে আপনাকে অনুরোধ করা উচিত।) এবং যেহেতু এক্সকোড 10 সম্পূর্ণ ম্যাক ওএস এসডিকে ইনস্টল করে না, তাই ইনস্টলারটি চালান

/Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg

এক্সকোড 10 দ্বারা এই প্যাকেজটি ইনস্টল করা নেই।





terminal