web-dev-qa-db-ja.com

Macの「stdio.h」はどこにありますか?

Mac OS XはUnixベースのシステムであることを知っています。また、stdio.hなどのC標準ライブラリは/usr/local/includeまたは/usr/include。ただし、このディレクトリにはライブラリはありません。ターミナルを使用してこのディレクトリを検索し、find ./ -iname "stdio.h"、しかし何も出てこない。しかし、奇妙なことに、gcc -test.c -o testコマンドが機能します。どうやってそうなった?私のCライブラリがどこにあるか知りたい。 p.s私もXcodeを使用しています。このアプリケーションに関連していますか?助けて!そして、AWS EC2 Linuxサーバーがあり、上記で参照した両方のライブラリがあります。

18
user3595632

Xcodeを持っているが、オプションのコマンドラインツールパッケージをインストールしていない場合、標準のインクルードとライブラリが通常の場所に見つからない可能性があります。試してください:

$ find /Applications/Xcode.app -name stdio.h

おそらく次のようなものが表示されます:

/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/usr/include/c++/4.2.1/tr1/stdio.h
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/usr/include/stdio.h
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/usr/include/sys/stdio.h
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk/usr/include/c++/4.2.1/tr1/stdio.h
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk/usr/include/stdio.h
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk/usr/include/sys/stdio.h
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk/System/Library/Frameworks/Kernel.framework/Versions/A/Headers/sys/stdio.h
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk/usr/include/c++/4.2.1/tr1/stdio.h
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk/usr/include/stdio.h
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk/usr/include/sys/stdio.h
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/usr/include/c++/4.2.1/tr1/stdio.h
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/usr/include/stdio.h

ただし、非Xcode(コマンドライン)プログラミングを実行する予定の場合は、コマンドラインツールパッケージをインストールするが必要な場合があります。 /usr/includeおよび/usr/libに通常のヘッダーとライブラリが表示されます。

28
Paul R

コマンドラインツールがインストールされていない場合は、次を実行できます。

xcode-select --install

ライセンス契約などに同意するためのダイアログボックスが開きます。

(これは上記の応答から欠落していました。)

24
polarise

/usr/includeのシンボリックリンクを作成/更新して、ライブラリを検出します。

Sudo ln -sf /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk/usr/include /usr/include

上記のパスは、stdio.hを検索して見つけることができます。

find /Applications/Xcode.app -path '*/usr/include/stdio.h'

XCode/MacOS SDKの更新ごとにこれを行う必要がありますが、今日はXCode 7のアップグレードに直面しています。

コマンドラインツールをインストールすると、xcode-selectで再インストールできないため、Mac AppStoreのアップグレードでパスが更新されない場合があります。

XCodeをアンインストールして再インストールしてからxcode-select --installを実行すると、パスが更新される場合がありますが、やり過ぎです。

いくつかの投稿ではxcode-select --switch /Application/Xcode.appについても言及していますが、私はあまり運がありませんでした。

8
Tarun

根本的な理由は/ usr/includeフォルダーがないため、コマンドラインツールをインストールしても自動的に追加されない場合があります。

パッケージをインストールします

/ライブラリ/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg

4
jolestar

私のラップトップでは、/usr/include/stdio.hおよび/usr/include/sys/stdio.hおよび/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/usr/include/stdio.h

2

既にロケートデータベースを構築している場合は、次を使用できます。

locate stdio.h

まだビルドしていない場合は、ビルドします。 locateコマンド 素晴らしい

1
Maxim Chetrusca

フォルダー内

Applications/Xcode/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk/usr/include

または類似。

0
emlai