web-dev-qa-db-ja.com

MacOS MojaveのCヘッダーはどこにありますか?

Appleはツールを移動し続けており、コマンドラインツールをインストールするという古いソリューションはxcode-select --installを使用することで機能しません。

Mojaveでは、xcode-selectは何もインストールせず(GUIは常にパッケージを見つけることができません)、コマンドラインツールは/usr/または/usr/localにそれ自体をインストールしません。

6

xcode-select --installは私のためにモハベで働きました。 Mac App StoreからXCodeをインストールしてから、開発者ツールをインストールしてみませんか?

ヘッダーの場所については、/Library/Developer/CommandLineTools/にApplesヘッダーがあります。

$ Sudo find /Library -name stdio.h 
/Library/Developer/CommandLineTools/usr/include/c++/v1/stdio.h
/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/sys/stdio.h
/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/stdio.h
/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/Frameworks/Kernel.framework/Versions/A/Headers/sys/stdio.h

そして、brew経由でgccをインストールすると、/usr/local/にヘッダーが追加されます。

$ Sudo find /usr -name stdio.h 
/usr/local/Cellar/gcc/8.2.0/include/c++/8.2.0/tr1/stdio.h
/usr/local/Cellar/gcc/8.2.0/lib/gcc/8/gcc/x86_64-Apple-darwin17.7.0/8.2.0/include/ssp/stdio.h
/usr/local/Cellar/gcc/8.2.0/lib/gcc/8/gcc/x86_64-Apple-darwin17.7.0/8.2.0/include-fixed/stdio.h
/usr/local/Cellar/gcc/8.1.0/include/c++/8.1.0/tr1/stdio.h
/usr/local/Cellar/gcc/8.1.0/lib/gcc/8/gcc/x86_64-Apple-darwin17.5.0/8.1.0/include/ssp/stdio.h
/usr/local/Cellar/gcc/8.1.0/lib/gcc/8/gcc/x86_64-Apple-darwin17.5.0/8.1.0/include-fixed/stdio.h
/usr/local/Cellar/gcc/7.3.0_1/include/c++/7.3.0/tr1/stdio.h
/usr/local/Cellar/gcc/7.3.0_1/lib/gcc/7/gcc/x86_64-Apple-darwin17.3.0/7.3.0/include/ssp/stdio.h
/usr/local/Cellar/gcc@7/7.3.0/include/c++/7.3.0/tr1/stdio.h
/usr/local/Cellar/gcc@7/7.3.0/lib/gcc/7/gcc/x86_64-Apple-darwin17.5.0/7.3.0/include/ssp/stdio.h
/usr/local/Cellar/gcc@7/7.3.0/lib/gcc/7/gcc/x86_64-Apple-darwin17.5.0/7.3.0/include-fixed/stdio.h
/usr/local/include/c++/8.2.0/tr1/stdio.h
/usr/local/lib/gcc/8/gcc/x86_64-Apple-darwin17.7.0/8.2.0/include/ssp/stdio.h
/usr/local/lib/gcc/8/gcc/x86_64-Apple-darwin17.7.0/8.2.0/include-fixed/stdio.h

(これらはAppleのヘッダーではなく、GCC/GLIBCです)。

Dtrussを使用すると、Apple clangがCommandLineTools/SDKsにあるものを使用することがわかります。

$ Sudo dtruss -f Sudo -u $USER clang test.c -o test 2>&1
3781/0x51d8:  pread(0x3, "#include <stdio.h>\n\nint main(void)\n{\n  printf(\"Hello, world\\n\");\n  return 0;\n}\n\0", 0x4F, 0x0)              = 79 0
3781/0x51d8:  __pthread_sigmask(0x3, 0x7FFEE3A7E768, 0x7FFEE3A7E76C)            = 0 0
3781/0x51d8:  close(0x3)                = 0 0
3781/0x51d8:  __pthread_sigmask(0x3, 0x7FFEE3A7E76C, 0x0)               = 0 0
3781/0x51d8:  open("/usr/local/include/stdio.h\0", 0x1000000, 0x1A)             = -1 Err#2
3781/0x51d8:  open("/Library/Developer/CommandLineTools/usr/lib/clang/10.0.0/include/stdio.h\0", 0x1000000, 0x48)               = -1 Err#2
3781/0x51d8:  open("/Library/Developer/CommandLineTools/usr/include/stdio.h\0", 0x1000000, 0x37)                = -1 Err#2
3781/0x51d8:  open("/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/stdio.h\0", 0x1000000, 0x47)                = 3 0
2
olehermanse

次の記事に従って: https://silvae86.github.io/sysadmin/mac/osx/mojave/beta/libxml2/2018/07/05/fixing-missing-headers-for-homebrew-in-mac -osx-mojave /

これはヘッダーをインストールします:

/Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkgを開きます

2
mpmeyer

Xcodeは、複数のSDKとXcodeの複数のインストールをサポートするようになりました。 SDKはXcode.app内にあり、Xcode.appはデフォルトでアプリケーションにインストールされますが、他の場所にある場合もあります。

xcrun --show-sdk-pathはデフォルトのSDKパスを表示しますが、他にもある場合があります。たとえば、1つの可能なパスは/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.13.sdkです。そこから、usr/includeは標準のCヘッダーなどの一般的なパブリックヘッダーを保持し、さまざまなAppleヘッダーはSystemの下のフレームワークにあります。

/Applications/Xcode.app/Contents/Developer/Platformsでは、iPhoneOS.platformAppleTVOS.platformなど、他のプラットフォーム用のフォルダーが見つかる可能性があります。それらの中で、Developer/SDKsはそれらのプラットフォームのSDKにつながります。

0