所以,蘋果包括<stdlib.h>
,<stdio.h>
和朋友。你必須確保標題在路徑上。你可以找到一個選擇的<stdlib.h>
的使用和它們各自的路徑與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>
(這是我讀它是)。相反,我用鍵盤保存了一個文件:一個CTRL + S錯過了CTRL,所以我的--sysroot
拼寫錯誤。它使用sdks
(複數s
)而不是sdk
(單數)。所以SYSROOT目錄不正確。
我開始賞金由於拼寫錯誤....
來源
2015-01-11 01:49:32
jww
感謝您的回覆,但重複的沒有它的不是這個問題我檢查了。 –
我不是iOS開發人員,但是如果您正在編寫C++代碼,您是否嘗試過使用? –
Enno