回答
`gcc -print-prog-name=cc1plus` -v
此命令要求該C++預處理器是使用gcc,然後要求該預處理器,其中它將查找包括。
對於您的特定設置,您將得到可靠的答案。
同樣地,對於Ç預處理:
echo $C_INCLUDE_PATH
如果此:
`gcc -print-prog-name=cc1` -v
的GCC Manual的CPP Section表明,頭文件可能位於以下目錄:
GCC看起來在幾個不同的地方頭。在一個正常的Unix系統中,如果您沒有另行指示它,它會尋找與#包括請求頭:
/usr/local/include
libdir/gcc/target/version/include
/usr/target/include
/usr/include
對於C++程序,它也將查找/ usr/include/g ++ - v3,首先。
這對您當前版本的gcc很好。它看起來的實際目錄取決於gcc構建時指定的選項。請參閱Shmoopty答案以獲得更好的解決方案。 – 2008-12-05 17:08:48
PS:我的C++頭文件位於:/usr/include/c++/4.0.0 – 2008-12-05 17:10:40
@Martin:你是個老派。我在/usr/include/c++/4.2 :) – 2008-12-05 17:20:56
此外,GCC將看在-I
選項後指定的目錄。
謝謝。這是很好的信息補充。 – 2008-12-05 16:16:00
您可以創建一個試圖包含僞造系統標頭的文件。 如果您在這種源上以詳細模式運行gcc,它將列出所有系統包含位置,因爲它會查找僞造頭。
$ echo "#include <bogus.h> int main(){}" > t.c; gcc -v t.c; rm t.c
[..]
#include "..." search starts here:
#include <...> search starts here:
/usr/local/include
/usr/lib/gcc/i686-apple-darwin9/4.0.1/include
/usr/include
/System/Library/Frameworks (framework directory)
/Library/Frameworks (framework directory)
End of search list.
[..]
t.c:1:32: error: bogus.h: No such file or directory
人們可以查看(附加的)通過檢查以下包括從bash的一個C程序路徑是空的,它可以被修改爲添加默認包含位置,通過:
export C_INCLUDE_PATH=$C_INCLUDE_PATH:/usr/include
爲了讓GCC打印出一套完整的目錄,在那裏將尋找系統頭,調用它是這樣的:
$ LC_ALL=C gcc -v -E -xc - < /dev/null 2>&1 |
LC_ALL=C sed -ne '/starts here/,/End of/p'
將產生形式的輸出
#include "..." search starts here:
#include <...> search starts here:
/usr/lib/gcc/x86_64-linux-gnu/5/include
/usr/local/include
/usr/lib/gcc/x86_64-linux-gnu/5/include-fixed
/usr/include/x86_64-linux-gnu
/usr/include
End of search list.
如果你有-I
- 命令行上的系列選項會影響打印的內容。
(該sed
命令是擺脫所有其他垃圾這個調用打印,而且LC_ALL=C
是確保sed
命令工作 - 在「從這裏開始」和「搜索列表結束」短語是翻譯IIRC)
g++ -print-search-dirs
gcc -print-search-dirs
的一組路徑,其中編譯器查找頭文件可以通過在命令進行檢查: -
CPP -v
如果聲明的#include「」,在源文件的當前目錄下的編譯器首先搜索,如果沒有找到,繼續在上面檢索的搜索目錄。
如果聲明的#include <>,編譯器搜索直接在由上述命令獲得的那些目錄。
來源: - http://commandlinefanatic.com/cgi-bin/showarticle.cgi?article=art026
這些是GCC看起來在默認情況下,指定的頭文件(假定頭文件被包含在V形<>)的目錄; 1./usr/local/include/- 用於第三方頭文件。 2./usr/include/- 用於系統頭文件。
如果您決定將您的自定義頭文件放在上述目錄以外的位置,可以按如下方式包含它們: 1.在文件中使用引號(「./custom_header_files/foo.h」)路徑,而不是包含語句中的V形。 2.編譯代碼時使用-I開關。 gcc -I/home/user/custom_headers/-c foo.c -p foo.o 基本上,-I開關告訴編譯器首先查看-I開關指定的目錄(在檢查標準目錄之前) 。使用-I開關時,可能會使用V形符號包含頭文件。
- 1. gcc編譯器在編譯時查找頭文件在哪裏?
- 2. Visual Studio在哪裏查找C++頭文件?
- 3. Windows中的C頭文件在哪裏?
- 4. 哪裏可以找到Objective-C運行時和頭文件?
- 5. 我在哪裏可以找到舊的C++頭文件
- 6. 在哪裏可以在線查找C++庫頭文件的源代碼?
- 7. 我應該在哪裏列出c和makefile中的頭文件
- 8. libzmq頭文件在哪裏?
- 9. 我在哪裏可以在unix上的C上找到頭文件
- 10. Ruby的has_header方法在哪裏查找頭文件?
- 11. c標準頭文件對應的代碼在哪裏?
- 12. 在哪裏聲明C#Win Forms中的頭文件的內容?
- 13. 我在哪裏可以找到OS X Mountain Lion上的C的頭文件?
- 14. PresentationTraceSources.Refresh在哪裏查找app.config文件?
- 15. Python首先在哪裏查找文件?
- 16. 紅寶石在哪裏查找文件?
- 17. qmake在哪裏查找pri文件?
- 18. IIS在哪裏查找文件
- 19. LoadLibrary A在哪裏查找文件?
- 20. npm在哪裏查找package.json文件?
- 21. 哪裏找到已安裝gcc-C++ rpm的centos中的iostream.h?
- 22. 清單文件在哪裏C#
- 23. c# - 在哪裏放置txt文件
- 24. 未找到C/C++頭文件的Eclipse
- 25. c/C++:找不到頭文件
- 26. 在C++中查找和移動文件
- 27. #include在C/C++頭文件
- 28. C#檢查哪裏屬性
- 29. -std = C++ 11的GCC沒有看到C++頭文件(通過PyDSTool)
- 30. GCC可以修改用於C++特性的C頭文件嗎?
有幫助的信息!謝謝你。 – 2008-12-05 16:58:36