TL; DR
애플 /usr/include
은 도도의 길을 갔다고 생각합니다. 멸종되었거나 몬티 파이썬의 앵무새 와 같습니다. .
Apple에서 제공 한 GCC (실제로 버전 정보에 표시된 다른 이름의 Clang)를 사용하거나 Clang은 문제를 피합니다. 모두 /usr/bin/gcc
와 /usr/bin/clang
시스템 라이브러리를 아래 네 개의 디렉토리 레벨을 찾을 수 있습니다 :
/Applications/Xcode.app/Contents/Developer/Platforms/…
자체 GCC 또는 다른 컴파일러를 빌드하는 경우 Xcode 응용 프로그램 디렉토리에서 시스템 라이브러리를 찾도록 GCC를 구성해야합니다.
탐험
업그레이드 직후에 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
디렉토리 모두 매우 유망한 것을 포함 하지 않습니다 .
다른 모든 것이 실패하면 매뉴얼을 읽으십시오
다음 단계 — 릴리스 정보를 찾아 읽으십시오.
여기에는 이와 관련된 정보가 없습니다. 따라서 애플은 더 이상 지원하지 않을 가능성이 있지만 (1 시간 또는 2 시간 만 노력하면 AFAICS) /usr/include
여전히 완전히로드 된 상태는 /usr/lib
아닙니다 ( /lib
아직도 아님).
GCC 옵션이 -v
추가 된 다른 컴파일을 확인하는 시간 (내가 사용한 makefile에서 설정 UFLAGS
하면 옵션이 C 컴파일러 명령 행에 옵션을 추가 함) :
$ 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
and 에 대한 하위 디렉토리가 있어야합니다 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
$
이것은 1 마일 길이의 완전히 잊을 수없는 디렉토리 이름에 표준 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
에 대한 경로 쇼 활성 개발자 디렉토리?