2015-02-06 285 views
8

我知道Mac OS X是一個基於Unix的系統。我聽說C標準庫如stdio.h位於/usr/local/include/usr/include。但是這個目錄中沒有任何類型的庫。我使用終端來搜索這個目錄,我也使用命令如find ./ -iname "stdio.h",但沒有出現。然而,奇怪的是,gcc -test.c -o test命令解決。它怎麼發生的?我想知道我的C庫位於何處。 p.s我也使用Xcode。它與這個應用程序有關嗎?幫我! 而且我有AWS EC2 linux服務器,並且它有兩個我上面提到過的庫。Mac中的「stdio.h」在哪裏?

+2

''頭文件是C標準庫的一部分,可能位於編譯器搜索頭文件的* any *目錄中,例如它可能位於'/ usr/lib'的子目錄中。另外,命令'find ./ -iname「stdio.h」'從* current *目錄中搜索文件,所以如果你在例如你自己的主目錄你將找不到該文件。 – 2015-02-06 09:59:04

回答

17

如果您有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中的常用標題和庫。

+0

謝謝。但是在我安裝命令行工具後,只有/ usr/include有庫文件。沒有「/ usr/local/include」!這意味着,當我輸入「cd/usr/local/include」時,出現錯誤:沒有這樣的文件或目錄。可以嗎? – user3595632 2015-02-06 10:17:26

+0

@ user3595632沒問題,'/ usr/local'傳統上由附加SDK和包使用,而不是由平臺供應商使用。 – Potatoswatter 2015-02-06 10:22:20

+0

沒錯 -/usr/local用於安裝第三方軟件,以便在更新系統時不會被覆蓋。系統的東西進入/ usr。 – 2015-02-06 10:22:49

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

0

在文件夾

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

或相似。

5

創建/更新/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,但我沒有太多運氣。

16

如果沒有命令行工具安裝,你可以運行:

xcode-select --install 

一個對話框打開,爲您接受許可協議等。

(這是從上述回答中遺漏的。)

+0

這是最短的答案! – 2017-06-06 19:17:27

1

如果你已經建立你的定位數據庫,你可以使用

locate stdio.h 

如果您還沒有準備好,構建它。 locate指令is awesome