ক্যাটালিনা 10.15 এ আপগ্রেড করার পরে কোনও ম্যাকের সি প্রোগ্রাম তৈরি করতে পারে না


64

মোজভেভে আপগ্রেড করার পরে কোনও ম্যাকের সি প্রোগ্রাম সংকলন করতে পারছে না এমন একটি পূর্ববর্তী প্রশ্ন রয়েছে এবং এর উত্তরগুলি কী ভুল হয় তার বেশিরভাগ প্রকরণকে আবৃত করে।

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

মোজভে বিষয়গুলির জন্য প্রধান প্রস্তাবিত পদক্ষেপ - কমান্ডটি ব্যবহার করে:

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

ডিরেক্টরিটি /Library/Developer/CommandLineTools/Packages/বিদ্যমান না হওয়ায় গেটটি বাইরে কাজ করে না (সুতরাং এখনও .pkgখুলতে কোনও ফাইল নেই )।

ডিরেক্টরি তৈরি এবং জনপ্রিয় করার জন্য কি কোনও ভাল (অফিসিয়াল) উপায় আছে /usr/include?


/usr/includeঅ্যাপলের বর্তমান এক্সকোড সহ আপনাকে অ্যাপলের বিকাশকারী সরঞ্জামগুলি ব্যবহার করার দরকার নেই । শিরোনামগুলি এবং এর মধ্যে রয়েছে Xcode.app/Contents/Developer/Platforms/SomePlatform/SDKs/SomeSDK। (একাধিক টার্গেট প্ল্যাটফর্মগুলিকে সমর্থন করার জন্য বিভিন্ন ডিরেক্টরিতে শিরোনাম রাখা প্রয়োজন, এবং /usr/includeহোস্ট সিস্টেমের থেকে আলাদা সংস্করণ লক্ষ্য করে কোনও সংকলন দুর্ঘটনাক্রমে ফাইলগুলি ব্যবহার না করে তা নিশ্চিত করা ভাল না to ) xcode-select -pপথটি কী দেখায়? সক্রিয় বিকাশকারী ডিরেক্টরি?
এরিক পোস্টপিসিল

আমি জিসিসি 9.2.0 (মোজাভেতে) তৈরি করেছি এবং এটি /usr/includeসিস্টেমের শিরোনামগুলির জন্য ব্যবহার করতে সক্ষম হবে বলে প্রত্যাশা করে । আমি এখনও এটি ব্যবহার করতে সক্ষম হতে চাই, যদিও আমি সন্দেহ করি যে অ্যাপল অবশেষে লিগ্যাসি ইউনিক্স সিস্টেমের সাথে সামঞ্জস্যের শেষ অংশগুলি ফেলে দিয়েছে (কিছুটা হলেও মোজভে'র কাজটি করার জন্য প্রয়োজনীয় সিস্টেমটি দিয়ে দেওয়ালে লেখা ছিল) ')। কোন ক্ষেত্রে, আমি সম্ভবত সিস্টেমের শিরোনামগুলির বর্তমান অবস্থানটি কোনওভাবে নির্ধারণ করে জিসিসিকে পুনর্নির্মাণ করতে হবে - কিভাবে জিসিসি কনফিগার করতে হয় তার জন্য ম্যানুয়াল বশিং।
জোনাথন লেফলার

1
@ জোনাথনলফলার: ক্যাটালিনায় আপডেট হওয়ার পরে আমিও এই সমস্যার মুখোমুখি হয়েছি যে কিছু ফাইল (যেমন stdlib.h) অনুপস্থিত যা আর প্যাকেজ ইনস্টল করার সময় সফ্টওয়্যার প্যাকেজ আর দ্বারা ব্যবহৃত হয়। আমি আপনার মত একই চেষ্টা করেছি macOS_10.14 এর জন্য, তবে এটি আর সম্ভব নয়। জিসিসি, সি ++ বা / লাইব্রেরি / বিকাশকারী / কমান্ডলাইনটুলস / ইউএসআর / বিনে যা কিছু ইনস্টল করা আছে তবে আর জানে না। আমি কি করতে পারি?
সেবাস্তিয়ান

যেহেতু আমি এক সপ্তাহ বা তারও অনেক আগে কাতালিনায় আপগ্রেড করেছি, আমি নতুন ম্যাক কীবোর্ডগুলিতে এখন কুখ্যাত 'ডাবল টাইপিং' ইস্যুর শিকার হয়েছি, আমি জেডএসে পরিবর্তন করেছি, আমার মন পরিবর্তন করেছি এবং বাশে ফিরে যাওয়ার সিদ্ধান্ত নিয়েছি এবং bash5.0 এ আপগ্রেড করুন, এখন আমি এখানে আছি কারণ আমি bash5.0 সংকলন করতে পারি না। আমি ভাবছি যদি এই সমস্যার সঠিক উত্তরটি কেবল আমার ক্ষতি হ্রাস না করে আর্কে স্যুইচ করে না?
DryLabRebel

সমস্যার চারপাশের একটি উপায় হ'ল এক্সকোড সংকলকগুলি ব্যবহার করা - যদি তারা ইনস্টল করা থাকে তবে তারা জানতে পারে যে সিস্টেমের শিরোনামগুলি কোথায় পাওয়া যায়। গৃহীত উত্তরের সিপিএটিএইচ কৌশলটি ঠিক আছে বলে মনে হচ্ছে। আমি এখনও 'ডাবল টাইপিং' (যা আমি জানি) থেকে কোনও ম্যাকের মুখোমুখি হইনি। আমি আমার আইফোনটি স্থির করেছিলাম যে আমি সমস্ত ধরণের আকর্ষণীয় জিনিস টাইপ করেছি, তবে এখনও পর্যন্ত, টাচ কাঠ, আমার ম্যাকবুক প্রো ঠিক আছে।
জোনাথন লেফলার

উত্তর:


30

সমস্যা সমাধানের জন্য আমার জন্য নিম্নলিখিত পথটি যুক্ত করুন CPATH:

export CPATH=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include

আমি সিপিএটিএইচটি যুক্ত করার চেষ্টা করেছি; তবে, আমি এখনও এই একই ত্রুটি পাচ্ছি। কেবল একটি সাধারণ কোট করার চেষ্টা করছে << "হ্যালো";
জন পেলান্ট

1
যখন আমি এটি চেষ্টা করেছি, এটি মোজভেভের অধীনে তৈরি একটি জিসিসি 9.2.0 দিয়ে একটি নৈমিত্তিক পরীক্ষায় কাজ করেছে যা এখন এক্সকোড 11.1 ব্যবহার করে - আপনাকে ধন্যবাদ।
জোনাথন লেফলার

এটি আমার পক্ষে জিসিসি 9.2.0_1
সন্দীপ

5
আপনি Xcode.app, ব্যবহারের পরিবর্তে কমান্ড লাইন টুলস ব্যবহার করেন তাহলেexport CPATH=/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/
nalzok

একটি বিজোড়তা - আমি কিছু কোড পেয়েছি যা শুরু হয়েছিল#include <stdlib.h>এবং তারপরে অভিযোগ সংকলন করতে ব্যর্থ হয়েছিল:In file included from …/usr/include/sys/wait.h:110, —— from …/usr/include/stdlib.h:66, —— from bm.c:27: —— …/usr/include/sys/resource.h:443:9: error: no previous prototype for ‘getiopolicy_np’ [-Werror=missing-prototypes] —— 443 | int getiopolicy_np(int, int) __OSX_AVAILABLE_STARTING(__MAC_10_5, __IPHONE_2_0);—— তবুও, আমি#include <ctype.h>আগেযুক্তকরার পরে#include <stdlib.h>এটি ঠিক করে দেয়। এর অর্থ কী এবং কীভাবে এটি স্বয়ংক্রিয়ভাবে পরিচালনা করা যায় তা নিয়ে এখনও কাজ করছেন।
জোনাথন লেফলার

48

আপনি এগিয়ে যাওয়ার আগে, এক্সকোড কমান্ড লাইন সরঞ্জামগুলি ইনস্টল করার বিষয়টি নিশ্চিত করুন।

xcode-select --install

আসলে, আপনি এটি করতে পারেন! আসলে সমস্ত সি হেডার এই ফোল্ডারে পাওয়া যায়:

/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/

আমাদের এই ফোল্ডারে সমস্ত হেডার ফাইলের জন্য কেবলমাত্র সিমলিংক তৈরি করতে হবে:

/usr/local/include/

এটা আমার জন্য কাজ! নিম্নলিখিত কমান্ড লাইনটি সমস্ত সমস্যার যত্ন নেবে:

sudo ln -s /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/* /usr/local/include/

আপনি কিছু সতর্কতা পাবেন। কিছু শিরোনাম ইতিমধ্যে বিদ্যমান রয়েছে:

ln: /usr/local/include//tcl.h: File exists
ln: /usr/local/include//tclDecls.h: File exists
ln: /usr/local/include//tclPlatDecls.h: File exists
ln: /usr/local/include//tclTomMath.h: File exists
ln: /usr/local/include//tclTomMathDecls.h: File exists
ln: /usr/local/include//tk.h: File exists
ln: /usr/local/include//tkDecls.h: File exists
ln: /usr/local/include//tkPlatDecls.h: File exists

অবহেলা করা সম্পূর্ণ ঠিক আছে। এখানেই শেষ.


1
হ্যাঁ, আমি মনে করি এটি সম্ভব হয়েছে - এই পরামর্শের জন্য আপনাকে ধন্যবাদ। এটি 'সিস্টেম হাইজিন' (যেমন d ডুপ্লিকেট শিরোনাম) এর জন্য আমার প্রয়োজনীয়তার সাথে সত্যিই মেলে না এবং /usr/local/ডিরেক্টরি হায়ারার্কিটি সিস্টেম সফ্টওয়্যারের পরিবর্তে স্থানীয় সফ্টওয়্যারের জন্য। আইএমও, শিরোনামগুলি থাকা উচিত /usr/includeএবং অ্যাপল কেবল একটি ব্যথা হচ্ছে।
জোনাথন লেফলার

1
কাছাকাছি উপায় আছে, কাজ করতে পারে, আপনি চেষ্টা করতে পারেন। পুনরুদ্ধার মোডে, এসআইপি অক্ষম করুন, তারপরে রাইটিং /মোডটি মাউন্ট করুন। তারপরে /usr/includeফোল্ডারটি পপুলেট করুন । এটি কারণ 10.15-এ, সিস্টেম কেবল পঠন মোড হিসাবে মাউন্ট করে। এসআইপি অক্ষম না করে আপনি সিস্টেমের ভলিউমটি মাউন্ট করতে সক্ষম হবেন না।
রায়

@ কমলনাথরয়: আপনার ইঙ্গিতগুলির জন্য ধন্যবাদ। এটি আমার পক্ষে খুব ভাল কাজ করেছে। পরিসংখ্যান সংক্রান্ত সফ্টওয়্যার আর-এ আমি শেষ পর্যন্ত আমার সমস্ত পছন্দসই প্যাকেজ ইনস্টল করতে পারি, কারণ কোনও আর আর ইনস্টলের জন্য প্রয়োজনীয় সমস্ত কিছুই খুঁজে পায় না।
সেবাস্তিয়ান

7
এই সমাধানটি আমার জন্য ক্যাটালিনা 10.15
বারবারা

2
অস্থায়ী ব্যবস্থা হিসাবেও এসআইপি অক্ষম করা আমার কাছে গ্রহণযোগ্য নয়।
জোনাথন লেফলার

22

টি এল; ডিআর

দেখা যাচ্ছে যে অ্যাপল /usr/includeএমন কিছু হিসাবে বিবেচনা করে যা ডোডোর পথে চলে গেছে - এটি বিলুপ্তপ্রায় - অথবা সম্ভবত এটি মন্টি পাইথনের তোতার মতো

অ্যাপল-সরবরাহিত জিসিসি ব্যবহার করা (প্রকৃতপক্ষে সংস্করণ তথ্য হিসাবে যেমনটি অন্য কোনও নামে ঝাঁকুনি দেওয়া) বা কলং সমস্যাগুলি এড়ায়। উভয়ই /usr/bin/gccএবং /usr/bin/clangনীচে সিস্টেম লাইব্রেরি চারটি ডিরেক্টরি স্তর খুঁজে পাবেন:

/Applications/Xcode.app/Contents/Developer/Platforms/…

আপনি যদি নিজের জিসিসি বা অন্যান্য সংকলক তৈরি করেন তবে এক্সকোড অ্যাপ্লিকেশন ডিরেক্টরিতে সিস্টেম লাইব্রেরিগুলি সন্ধান করার জন্য আপনাকে সম্ভবত এটি কনফিগার করতে হবে।

এক্সপ্লোরেসন

আপগ্রেডের সাথে সাথেই, আমি এক্সকোড ১১.০ চালিয়েছি। এটি কিছু অতিরিক্ত উপাদান ইনস্টল করতে চেয়েছিল, তাই আমি এটি এটি করতে দিই। যাইহোক, এটি পুনরায় স্থাপন /usr/includeবা ডিরেক্টরি অধীনে না /Library

পূর্ববর্তী প্রশ্নের পরামর্শের অন্য বিটগুলির মধ্যে একটি ছিল:

xcode-select --install

এটি করার সময়, এটি দাবি করেছিল যে এটি কমান্ড লাইন ইউটিলিটিগুলি ডাউনলোড করেছে এবং এটি নিশ্চিত করেছে যে /usr/bin/gccএবং /usr/bin/clangঅন্যান্য উপস্থিত রয়েছে। এটি একটি দরকারী পদক্ষেপ (যদিও আমি তারা আগে উপস্থিত ছিল কিনা তা সুনির্দিষ্টভাবে পরীক্ষা করিনি))

$ /usr/bin/gcc --version
Configured with: --prefix=/Applications/Xcode.app/Contents/Developer/usr --with-gxx-include-dir=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/c++/4.2.1
Apple clang version 11.0.0 (clang-1100.0.33.8)
Target: x86_64-apple-darwin19.0.0
Thread model: posix
InstalledDir: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin
$

ব্যবহার করে /usr/bin/gcc, এখন প্রোগ্রামগুলি সংকলন করা সম্ভব:

$ make CC=/usr/bin/gcc al
co  RCS/al.c,v al.c
RCS/al.c,v  -->  al.c
revision 1.7
done
/usr/bin/gcc -I/Users/jleffler/inc -g -O3 -std=c11 -pedantic -Wall -Wextra -Werror -Wshadow -Wmissing-prototypes -Wpointer-arith  -Wold-style-definition -Wcast-qual -Wstrict-prototypes -DHAVE_MEMMEM -DHAVE_STRNDUP -DHAVE_STRNLEN  -DHAVE_GETDELIM   -o al al.c -L/Users/jleffler/lib/64  -ljl
$

তবে /usr/includeএখনও নিখোঁজ রয়েছে। /Libraryএখন অধীনে একটি ডিরেক্টরি আছে :

$ ls /Library/Developer
CommandLineTools  PrivateFrameworks
$ ls /Library/Developer/CommandLineTools
Library SDKs    usr
$ ls /Library/Developer/CommandLineTools/SDKs
MacOSX.sdk      MacOSX10.14.sdk MacOSX10.15.sdk
$ ls /Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/
Entitlements.plist SDKSettings.json   System
Library            SDKSettings.plist  usr
$

আমরাও Systemনা Libraryডিরেক্টরির কিছু খুব আশাপ্রদ ধারণ করে।

অন্য সমস্ত ব্যর্থ হলে ম্যানুয়ালটি পড়ুন

পরবর্তী পদক্ষেপ - রিলিজ নোটগুলি সন্ধান করুন এবং পড়ুন:

এর সাথে সম্পর্কিত এমন কোনও তথ্য নেই। সুতরাং, সম্ভাবনা হ'ল (এএএএফআইএস, মাত্র এক ঘন্টা বা দু'বার চেষ্টা করার পরে) অ্যাপল আর সমর্থন করে না /usr/include- যদিও এটির এখনও পুরোপুরি বোঝা আছে /usr/lib(নেই)/lib যদিও নেই)।

জিসিসি বিকল্পের সাথে আরও একটি সংকলন পরীক্ষা করার সময় -vযুক্ত হয়েছে (আমি ব্যবহৃত মেকফাইলে সেটিংস UFLAGSসি সংকলক কমান্ড লাইনে বিকল্প যুক্ত করে):

$ make UFLAGS=-v CC=/usr/bin/gcc ww
co  RCS/ww.c,v ww.c
RCS/ww.c,v  -->  ww.c
revision 4.9
done
/usr/bin/gcc -I/Users/jleffler/inc -g -O3 -std=c11 -pedantic -Wall -Wextra -Werror -Wshadow -Wmissing-prototypes -Wpointer-arith  -Wold-style-definition -Wcast-qual -Wstrict-prototypes -DHAVE_MEMMEM -DHAVE_STRNDUP -DHAVE_STRNLEN  -DHAVE_GETDELIM -v  -o ww ww.c -L/Users/jleffler/lib/64  -ljl
Apple clang version 11.0.0 (clang-1100.0.33.8)
Target: x86_64-apple-darwin19.0.0
Thread model: posix
InstalledDir: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin
 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang" -cc1 -triple x86_64-apple-macosx10.15.0 -Wdeprecated-objc-isa-usage -Werror=deprecated-objc-isa-usage -emit-obj -disable-free -disable-llvm-verifier -discard-value-names -main-file-name ww.c -mrelocation-model pic -pic-level 2 -mthread-model posix -mdisable-fp-elim -fno-strict-return -masm-verbose -munwind-tables -target-sdk-version=10.15 -target-cpu penryn -dwarf-column-info -debug-info-kind=standalone -dwarf-version=4 -debugger-tuning=lldb -ggnu-pubnames -target-linker-version 512.4 -v -resource-dir /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/11.0.0 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk -I /Users/jleffler/inc -D HAVE_MEMMEM -D HAVE_STRNDUP -D HAVE_STRNLEN -D HAVE_GETDELIM -I/usr/local/include -O3 -Wall -Wextra -Werror -Wshadow -Wmissing-prototypes -Wpointer-arith -Wold-style-definition -Wcast-qual -Wstrict-prototypes -Wno-framework-include-private-from-public -Wno-atimport-in-framework-header -Wno-extra-semi-stmt -Wno-quoted-include-in-framework-header -pedantic -std=c11 -fdebug-compilation-dir /Users/jleffler/src/cmd -ferror-limit 19 -fmessage-length 110 -stack-protector 1 -fstack-check -mdarwin-stkchk-strong-link -fblocks -fencode-extended-block-signature -fregister-global-dtors-with-atexit -fobjc-runtime=macosx-10.15.0 -fmax-type-align=16 -fdiagnostics-show-option -fcolor-diagnostics -vectorize-loops -vectorize-slp -o /var/folders/77/zx9nk6dn7_dg4xd4stvt42v00000gn/T/ww-4cb85b.o -x c ww.c
clang -cc1 version 11.0.0 (clang-1100.0.33.8) default target x86_64-apple-darwin19.0.0
ignoring nonexistent directory "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/local/include"
ignoring nonexistent directory "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/Library/Frameworks"
#include "..." search starts here:
#include <...> search starts here:
 /Users/jleffler/inc
 /usr/local/include
 /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/11.0.0/include
 /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include
 /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include
 /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks (framework directory)
End of search list.
 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ld" -demangle -lto_library /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/libLTO.dylib -dynamic -arch x86_64 -macosx_version_min 10.15.0 -syslibroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk -o ww -L/Users/jleffler/lib/64 /var/folders/77/zx9nk6dn7_dg4xd4stvt42v00000gn/T/ww-4cb85b.o -ljl -L/usr/local/lib -lSystem /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/11.0.0/lib/darwin/libclang_rt.osx.a
 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/dsymutil" -o ww.dSYM ww
$

ডেটা যে ঝাপটায় মূল তথ্য হ'ল:

-isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk

সংকলনের জন্য এটি কার্যকরভাবে 'রুট' ডিরেক্টরি, সুতরাং এর জন্য নিম্নলিখিত অধীন ডিরেক্টরি থাকতে হবে usrএবং usr/include:

$ ls /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk
Entitlements.plist SDKSettings.json   System
Library            SDKSettings.plist  usr
$ ls /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr
bin     include lib     libexec share
$ ls /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include
AppleTextureEncoder.h  dns_util.h             memory.h               simd
AssertMacros.h         dtrace.h               menu.h                 slapi-plugin.h
Availability.h         editline               miscfs                 spawn.h
AvailabilityInternal.h err.h                  module.modulemap       sqlite3.h
AvailabilityMacros.h   errno.h                monetary.h             sqlite3ext.h
AvailabilityVersions.h eti.h                  monitor.h              stab.h
lots more lines
dirent.h               mach-o                 security               xcselect.h
disktab.h              mach_debug             semaphore.h            xlocale
dispatch               machine                servers                xlocale.h
dlfcn.h                malloc                 setjmp.h               xpc
dns.h                  math.h                 sgtty.h                zconf.h
dns_sd.h               membership.h           signal.h               zlib.h
$

এটি দেখায় যে মাইল-লম্বা এবং সম্পূর্ণ অপ্রতিরোধ্য ডিরেক্টরি ডিরেক্টরিতে স্ট্যান্ডার্ড সি এবং পসিক্স শিরোনাম, এবং অ্যাপল-নির্দিষ্ট অতিরিক্ত রয়েছে s

পূর্ববর্তী /usr/local/ডিরেক্টরি অক্ষত বলে মনে হচ্ছে; এর usr/local/includeঅধীনে বিদ্যমান না থাকা সম্পর্কে সতর্কতা -isysrootdirনিরীহ (এবং -vবিকল্পটি ছাড়া দৃশ্যমান নয় )।


দুঃখিত আপনার পরামর্শ অনুসরণ করতে পারে না। ক্যাটালিনা আপডেটের সাথে আমিও একই ত্রুটি পাচ্ছি। Vscode দিয়ে আমি সি ++ অ্যাপ্লিকেশন তৈরি wchar.hকরতে পারিনি এবং ত্রুটি খুঁজে পাওয়া যায়নি not আমি এই ফোল্ডারটি -আই / অ্যাপ্লিকেশনস / এক্সকোড.এপ / সামগ্রীগুলি / বিকাশকারী / প্ল্যাটফর্মগুলি / ম্যাকসএক্সএক্স.প্ল্যাটফর্ম / বিকাশকারী / এসডিকে / ম্যাকসএক্স.এসডিকে / ইউএসআর / অন্তর্ভুক্ত করার চেষ্টা করেছি এবং আইএএম "ত্রুটির জন্য নিখোঁজ চিহ্নগুলি সম্পর্কে অন্যান্য ত্রুটিগুলি পেয়েছি: কোনও সদস্য নেই বিশ্বব্যাপী নেমস্পেসে 'অসহায়' নামকরণ করা হয়েছে
ইউজার 3279954

--verboseটাস্ক ফাইলটিতে সক্ষম এবং লক্ষ্য করা গেছে যে বনাম কোড /usr/include/c++/v1/ফোল্ডারে খুঁজছে যা এখন ক্যাটালিনায় নেই। উপরের এসডিকে অন্তর্ভুক্ত নীচের ফোল্ডারটি যুক্ত করুন এবং এখন এটি কাজ করে। "-আই / গ্রন্থাগার / বিকাশকারী / কমান্ডলাইনটুলস / ইউএসআর / অন্তর্ভুক্ত / সি ++ / ভি 1 /",
ব্যবহারকারী 3279954

@ ট্রোজানফো - আমি এসসিসি পছন্দ করি তবে 1999 সালে এটি স্পষ্ট ছিল না যে এসসিসিএস ওয়াই টু পোস্টের পরে স্নেহপূর্ণভাবে কাজ করবে কিনা (এবং আমি যে সিসিসিএস সম্পর্কে জানতাম তার কোনও ভাল ওপেন সোর্স বাস্তবায়ন ছিল না), তাই আমি অনিচ্ছায় আরসিএসে ফিরে এসেছি।
জোনাথন লেফলার

বাহ: ডি তো যাই হোক /usr/includeনিখোঁজ হওয়ার সমস্যা কী ? এটি সর্বদা স্পষ্টতই সংকলকের অংশটির অন্তর্ভুক্ত ছিল যাতে পথটি অন্তর্ভুক্ত থাকে যাতে ব্যবহারকারীর সম্পর্কে এটি সম্পর্কে কখনই জানতে হবে না (আপনি যখন কোনও কিছু ঘোষিত হয়েছিল তা সন্ধানের চেষ্টা করার বাইরে)। কলং এর SDK পাথের নীচে একই কাজ করে Xcode.appতাই নেট-ইফেক্টটি একই।
ট্রোজানফো

1
@ ট্রোজানফো: একটি সমস্যা (আমার প্রাথমিক সমস্যা) /usr/includeচলে যাওয়া এডাব্লুওএলটি হ'ল যদি আপনি উত্স থেকে নিজের জিসিসি তৈরি করে থাকেন তবে সম্ভবত সিস্টেমের শিরোনামটি সন্ধান করতে এটি সংকলিত হয়েছিল /usr/includeএবং তাই সংকলনগুলি ব্যর্থ হয়েছে। আমি সর্বশেষতম জিসিসি পাশাপাশি কলং ব্যবহার করতে চাই। আমি অ্যাপলের ঝনঝনানিটি ব্যবহার করে খুশি, তবে আমি অ্যাপ্লির কলংকে জিসিসি হিসাবে মুখোমুখি করতে পেরে খুশি নই - এটি জিসিসির মতো নয়। সিস্টেম শিরোলেখার স্থানান্তরিত করে জিসিসি তৈরির জন্য আমি এখনও কোনও রেসিপি তৈরি করেছি না। (আমি মনে করি --with-native-system-header-dir="${XCODE_HDR}"এটি উত্তরের একটি অংশ; এটি অবশ্য পুরো উত্তর নয়))
জনাথন লেফলার

7

নিম্নোক্ত অন্তর্নিহিত Makeভেরিয়েবলগুলি নির্দেশ করুন যেখানে এখন শিরোনামগুলি Xcode কমান্ড লাইন সরঞ্জামের জন্য (Xcode CLI) অবস্থিত:

export CFLAGS+=-isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk
export CCFLAGS+=-isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk
export CXXFLAGS+=-isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk
export CPPFLAGS+=-isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk

-isysrootবিকল্প রুট ফাইল সিস্টেম রুট ডিরেক্টরি থেকে দূরে অবস্থান আপডেট /

সুতরাং, এটি নিশ্চিত করে যে সাধারণ /usr/*ফাইলগুলি তাদের নতুন জায়গায় পাওয়া যায়।

অর্থাৎ, /Library/Developer/CommandLineTools/SDKs/MacOSX.sdkএখন ফাইলগুলি পাওয়া যায়। এই ফাইলগুলি হ'ল:

Entitlements.plist 
Library
SDKSettings.json
SDKSettings.plist
System
usr

আমার মেকফিলগুলিতে (এবং বেশিরভাগ অন্যান্য মেকফিলগুলি আমি দেখতে পাই), CFLAGSএটি একটি একক বিকল্পের চেয়ে অনেক জটিল the -isysrootবিকল্পটি অন্যান্য সেটিংস (প্রচুর পরিমাণে অন্যান্য সেটিংস) ছাড়াও 'হওয়া দরকার। এখানে একটি ধারণার কার্নেল থাকতে পারে ( -isysrootবিকল্পটি এবং এর নীচের অবস্থানটি পাস করুন /Library/Developer/…), তবে এটি প্রাথমিক সময়ের জন্য প্রস্তুত হওয়ার আগে কিছু পলিশ করা দরকার।
জোনাথন লেফলার

export CFLAGS+=-isysroot ...পরিবর্তে @ জোনাথনলফলার ইউজিং সেই ব্যবহারের ক্ষেত্রে কাজ করবে। এটিই একমাত্র সমাধান যা আমার জন্য (মোজাভে (10.14) ক্যাটালিনা (10.15) এসডিকে নিয়ে কাজ করেছিল I .pkgআমার এক্সকোড এবং কমান্ড লাইন সরঞ্জামগুলি আপ টু ডেট থাকা সত্ত্বেও আমার কাছে ফাইলের কথা বলার ফাইলটি নেই।
নর্সপপ

@Norswap - সেখানে ব্যবহার মধ্যে একটি বিশাল পার্থক্য CFLAGS=…এবং CFLAGS+=…
জোনাথন লেফলার 14

@ জোনাথন লেফলার তাতে সম্মত হয়েছে। আমি উত্তর উত্তর আপডেট করেছি +=। ধন্যবাদ @ নরসওয়ার্প
কোটলেস

1
বিকল্পভাবে, আমি বুঝতে পেরেছি যে SDKROOTএকই এসডিকে মান ( /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk) নির্ধারণ করা আমার পক্ষেও কাজ করবে!
নর্সপ্পে

4

আমি ওএসএক্স-এ আর-এর জন্য সি ++ সংকলক সহ একটি নবাগত এবং আমি একই সমস্যা পেয়েছি যে সি ++ ওএস আপডেট হওয়ার পরে শিরোলেখ খুঁজে পেল না ( যদিও এটি ছিল যদিও ম্যাথ। হারিয়েছে )। আমি https://thecoatlessprofender.com/programming/cpp/r-compiler-tools-for-rcpp-on-macos/ এর নির্দেশাবলী অনুসরণ করেছি তবে কিছুই পরিবর্তন হয়নি।

এক্সকোড সিএলআই পুনরায় ইনস্টল করার পরে অবশেষে, এটি আমার পক্ষে কাজ করেছিল

xcode-select --install

এবং তারপরে @ কোটলেস প্রস্তাবিত হিসাবে পতাকাগুলিকে ভারে পরিবর্তন করুন:

export CFLAGS=-isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk
export CCFLAGS=-isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk
export CXXFLAGS=-isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk
export CPPFLAGS=-isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk

1

আমার ক্ষেত্রে আমি হোমব্রু ব্যবহার করে ইনস্টল করেছি llvmএবং দেখেছি বলে মনে হয়েছিল gcc। আমি যখন সেগুলি সরিয়ে দিয়েছি এবং এভাবে ম্যাকোএস ঝাঁকুনিতে সম্পূর্ণরূপে নির্ভর করেছি তখন এটি শিরোনাম এবং সংকলনটি আবার কাজ করতে পারে।


0

এই প্রশ্নের কোমল নাথ রায় উত্তর /usr/local/includeঅনুসরণ করার পরেও apue.h নির্ভরতা এখনও আমার মধ্যে অনুপস্থিত ছিল ।

আমি নির্ভরতা গিট থেকে ম্যানুয়ালি ডাউনলোড করে এনে রেখেছি /usr/local/include


হেডার apue.hডব্লিউ রিচার্ড স্টিভেনস, স্টিফেন একটি Rago থেকে আসে ইউনিক্স পরিবেশ উন্নত প্রোগ্রামিং, 3 য় Edn 2013 আমি যতদূর জানি, এটি একটি সিস্টেম হেডার যেমন আপেল দ্বারা কখনোই সরবরাহ করা হয়েছিল। (এটি /usr/includeআমার মেশিনে নেই যা এখনও মোজভেভ চালায়)) এটি একবার ইনস্টল করা থাকলে /usr/includeএটি সম্ভবত অ্যাপল সরবরাহ করার পরিবর্তে ম্যানুয়ালি তৈরি করা হয়েছিল। সেই হিসাবে এটি /usr/local/includeআগে ইনস্টল করা উচিত ছিল ।
জোনাথন লেফলার

আমার নিষ্পাপ প্রশ্নটি ক্ষমা করুন তবে আমি এই সপ্তাহে কেবলমাত্র C ++ এ হাত পেয়েছি। নির্ভরতা / শিরোলেখগুলি কি সি ++ এ ম্যানুয়ালি পরিচালিত হয়? যদি হ্যাঁ, আমি কি সমস্ত কথিত নির্ভরশীলতা / শিরোনামগুলিতে রেখেছি /usr/include?
ম্যাথু বারবারা

1
প্রশ্নোত্তর: কম-বেশি এটি আপনার অর্থের উপরে কিছুটা নির্ভর করে, তবে সি বা সি ++ এর জন্য নির্ভরতা এবং শিরোনাম সম্পর্কে আপনাকে চিন্তিত হতে হবে যদি আপনি যে মেশিনে কাজ করছেন তার মধ্যে শিরোনামগুলি মানক নয়। তারপরে প্রশ্ন আসে - মান কী? এবং যে উত্তম উত্তর দেওয়া যায় সে সম্পর্কে এটি "এটি নির্ভর করে" এবং এটি 'প্ল্যাটফর্ম' (ও / এস, সংকলক) সহ অনেকগুলি বিষয়ের উপর নির্ভর করে। কিউ 2 হ'ল "না, আপনার সাধারণত কিছু রাখা উচিত নয় /usr/include" - /usr/local/includeপরিবর্তে ব্যবহার করুন। সাধারণত, ছেড়ে যাওয়া /usr/includeএবং /usr/libএকা থাকা এবং এর /usr/localপরিবর্তে উপাদান যুক্ত করা সবচেয়ে নিরাপদ ।
জোনাথন লেফলার

0

সমাধানটি আমার ধারণা থেকে সহজ ছিল। ঝাঁকুনি / এলএলভিএম ইনস্টল করুন।

brew install llvm

তারপরে আমাদের নিজেরাই সিমলিংক তৈরি করতে হবে।

for f in /usr/local/Cellar/llvm/9.0.0_1/bin/clang*; do ln -s ${f} /usr/local/bin/"${f##*/}"; done

এবং

ln -s /usr/local/Cellar/llvm/9.0.0_1/include/c++ /usr/local/include/c++

আপনার llvm সংস্করণ অনুসারে উপরের কমান্ডগুলি সংশোধন করুন।

এখন, আপনি কোনও কাস্টম পতাকা ছাড়াই সি ++ প্রোগ্রামগুলি সংকলন করতে পারেন।

clang++ hello.cpp

0

আমি চেষ্টা করেছি 1) ম্যানুয়ালি লিঙ্কিং 2) ব্রিউ ইনস্টল এলএলভিএম, কিন্তু তারা কার্যকর হয়নি।

পরিশেষে, এটি আমার পক্ষে কাজ করেছে: https://gitmemory.com/issue/pytorch/pytorch/31190/565153503

নিম্নলিখিত এনভ ভার্স সেট করে:

export CC=clang
export CXX=clang++
export MACOSX_DEPLOYMENT_TARGET=10.9

0

আমার জন্য, এটি অনুসরণ হিসাবে ভাল কাজ করে:

1. xcode-select --install

2. sudo ln -s /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/* /usr/local/include/

3. export SDKROOT=/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.