2013-02-28 109 views
1

我有一個C文件,其中包含一些#include頭文件的說明。我知道當我使用gcc編譯C文件時,編譯器會在環境變量$CPATH中包含的路徑中查找.h文件。我怎樣才能得到一個特定的.h文件的絕對路徑? (我更喜歡得到路徑,而不編譯)如何獲取特定頭文件的絕對路徑?

+0

'找到file.h' – Kevin 2013-02-28 21:42:49

+1

什麼UNIX系統是什麼?我從來沒有遇到過一個帶有$ CPATH變量的變量。 – 2013-02-28 21:48:51

+1

@ott,['CPATH'](http://gcc.gnu.org/onlinedocs/gcc/Environment-Variables.html)長久以來一直是gcc功能。不過,我從來沒有見過任何人使用它。 – 2013-02-28 21:51:51

回答

0

這是一個黑客位的:

cpp -MD file.c | sed -n '/\.h"/s/.*"\(.*\)".*/\1/p' | sort -u 

,並明確取決於cpp輸出格式。 (上面的作品爲gnu cpp 3.4.6) 這給出了所有包含文件的完整路徑。通過另一個篩選器來減少輸出到您關心的特定標題。

+0

現在有一段時間,沒有一個單獨的'cpp'與GCC。 – vonbrand 2013-03-01 00:31:10

1

如果使用-E進行編譯,您將獲得預處理器輸出,並且所有包含的文件都將具有其完整路徑。例如,在下文中,文件「文件」將包含預處理輸出:

gcc -E -o file file.c 
相關問題