Mac中的“stdio.h”在哪里?

时间:2015-02-06 09:55:41

标签: c macos

我知道Mac OS X是一个基于Unix的系统。我听说标准库如stdio.h位于/usr/local/include/usr/include。但是这个目录中没有任何类型的库。我使用终端来搜索这个目录,我也使用像find ./ -iname "stdio.h"这样的命令,但没有任何结果。但是,奇怪的是,gcc -test.c -o test命令可以解决。这是怎么发生的?我想知道我的C库所在的位置。 p.s我也使用Xcode。它与此应用程序有关吗?帮我!     我有AWS EC2 linux服务器,它有两个我上面提到的库。

8 个答案:

答案 0 :(得分:24)

如果您有Xcode但尚未安装可选的Command Line Tools软件包,则可能无法在通常的位置找到标准包含和库。尝试:

$ 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中看到常用的标题和库。

答案 1 :(得分:21)

如果您没有安装命令行工具,则可以运行:

$ echo -e "a\nb" | jq -Rc | jq -sc 
jq - commandline JSON processor [version 1.5]
Usage: jq [options] <jq filter> [file...]
...
[]

将打开一个对话框,供您接受许可协议等。

(上述回复中缺少这一点。)

答案 2 :(得分:8)

创建/更新/usr/include的符号链接以检测到lib:

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升级更新路径。

卸载&amp;重新安装XCode然后运行xcode-select --install可能会更新路径,但是过度杀伤。

有些帖子还提到xcode-select --switch /Application/Xcode.app,但我没有太多运气。

答案 3 :(得分:2)

在我的笔记本电脑中,它出现在许多地方,例如/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

答案 4 :(得分:1)

如果您已经构建了locate数据库,则可以使用

locate stdio.h

如果您还没有,请构建它。 locate命令is awesome

答案 5 :(得分:0)

在文件夹

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

或类似。

答案 6 :(得分:0)

根本原因是缺少/ usr / include文件夹,安装命令行工具有时不会自动添加它。

在以下位置安装软件包

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

答案 7 :(得分:0)

我已经安装了“ CommandLineTools”,并且Xcode和CommandLineTools目录中都存在“ stdio.h”文件。

/Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/usr/include/stdio.h /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/usr/include/stdio.h