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




xcode macos (5)

টি এল; ডিআর

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

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

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

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

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

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

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

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 , 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
$

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

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

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

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

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

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

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

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


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

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

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


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

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

আমি ওএসএক্স-এ আর-এর জন্য সি ++ সংকলক সহ একটি নবাগত এবং আমি একই সমস্যা পেয়েছি যে সি ++ ওএস আপডেট হওয়ার পরে শিরোলেখ খুঁজে পেল না ( যদিও এটি ছিল যদিও ম্যাথ.হু ।) আমি https://thecoatlessprofessor.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

নিম্নোক্ত অন্তর্নিহিত Make ভেরিয়েবলগুলি সেট 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




macos-catalina