所以,苹果包括<stdlib.h>
,<stdio.h>
和朋友。您必须确保标题在路径上。您可以通过以下方式找到一系列<stdlib.h>
要使用的 's 及其各自的路径find
:
$ find /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer -name stdio.h
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS7.1.sdk/usr/include/c++/4.2.1/tr1/stdio.h
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS7.1.sdk/usr/include/stdio.h
这里有两种方法可以确保标题在路径上。首先(首选方式)是使用--sysroot
. 使用--sysroot
确保头文件和库都在路径上,因此您不需要额外的编译器选项(如-I
、 - L
、l
等):
CC=export CC=/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang
CFLAGS="-Wall -Wextra -Wconversion -arch armv7 -arch armv7s \
--sysroot="/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS6.1.sdk""
然后,你会像这样使用它:
$(CC) $(CFLAGS) -c foo.c -o foo.o
第二种方法是仅包含标头,但您将遇到类似的库痛点:
CC=export CC=/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang
CFLAGS="-Wall -Wextra -Wconversion -arch armv7 -arch armv7s \
-I="/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS6.1.sdk/usr/include""
你仍然会像这样使用它:
$(CC) $(CFLAGS) -c foo.c -o foo.o
就我而言,我因“没有这样的文件或目录”错误而失败。但它不是没有这样的文件<stdio.h>
(这是我读到的)。相反,我使用键盘保存了一个文件:aCTRL + S错过了CTRL,所以 my--sysroot
拼写错误。它使用sdks
(复数会费额外的s
)而不是sdk
(单数)。所以 SYSROOT 目录不正确。
由于拼写错误,我开始了赏金......