टी एल; डॉ
ऐसा प्रतीत होता है कि Apple /usr/include
कुछ ऐसा मानता है जो डोडो के रास्ते चला गया है - यह विलुप्त है - या शायद यह मोंटी पाइथन के तोते की तरह है ।
Apple द्वारा प्रदान की गई GCC का उपयोग करना (वास्तव में, यह किसी अन्य नाम से क्लैंग है, जैसा कि संस्करण जानकारी दिखाता है) या क्लैंग समस्याओं से बचा जाता है। दोनों /usr/bin/gcc
और /usr/bin/clang
प्रणाली पुस्तकालयों नीचे चार निर्देशिका स्तरों मिलेगा:
/Applications/Xcode.app/Contents/Developer/Platforms/…
यदि आप अपना स्वयं का GCC या अन्य संकलक बनाते हैं, तो आपको Xcode निर्देशिका निर्देशिका के तहत सिस्टम लाइब्रेरी खोजने के लिए (संभवतः) इसे कॉन्फ़िगर करने की आवश्यकता होगी।
एक्सप्लोरेशन
उन्नयन के तुरंत बाद, मैंने XCode 11.0 चलाया। यह कुछ अतिरिक्त घटकों को स्थापित करना चाहता था, इसलिए मैंने इसे ऐसा करने दिया। हालाँकि, इसके /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
निर्देशिका कुछ भी बहुत आशाजनक होते हैं।
जब बाकी सब विफल हो जाए, तो मैनुअल पढ़ें
अगला चरण - रिलीज़ नोट्स खोजें और पढ़ें:
इसमें कोई जानकारी नहीं है जो इससे संबंधित है। तो, संभावना है (AFAICS, केवल एक या दो घंटे के प्रयास के बाद) कि Apple अब समर्थन नहीं करता है /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
$
इससे पता चलता है कि मील-लंबी और पूरी तरह से अनमोल डायरेक्टरी नाम में मानक C और POSIX हेडर, साथ ही Apple-विशिष्ट एक्स्ट्रा कलाकार शामिल हैं।
पिछली /usr/local/
निर्देशिका अक्षुण्ण प्रतीत होती है; के usr/local/include
तहत मौजूद नहीं के बारे में चेतावनी -isysrootdir
हानिरहित है (और -v
विकल्प के बिना दिखाई नहीं देता है )।
/usr/include
Apple के वर्तमान Xcode के साथ Apple के डेवलपर टूल का उपयोग करने की आवश्यकता नहीं है । हेडर और इस तरह के हैंXcode.app/Contents/Developer/Platforms/SomePlatform/SDKs/SomeSDK
। (कई टारगेट प्लेटफ़ॉर्म का समर्थन करने के लिए अलग-अलग निर्देशिकाओं में हेडर रखना आवश्यक है, और यह/usr/include
सुनिश्चित करने के लिए अच्छा नहीं है कि होस्ट सिस्टम से भिन्न संस्करण को लक्षित करते समय कोई भी संयोगवश इससे फ़ाइलों का उपयोग न करें।)xcode-select -p
पथ के लिए क्या दिखाता है। सक्रिय डेवलपर निर्देशिका?