我正在讀取內核的源文件並且有一些問題:編譯內核時編譯器使用哪個頭文件路徑?
1)編譯內核時編譯器使用哪個頭文件路徑? 在源文件樹中,我找到了一個名爲'include'的目錄。 但是,在'/ usr/include /'中,我也可以找到一些內核頭文件。 編譯器使用哪一個? 2)某些文件包含這樣的頭文件:'#include', 但我在源樹 和'/ usr/include /'下找不到任何名爲'asm'的目錄,但是,他們有名爲'asm_generic'的目錄。 當我使用命令'make headers_install'時,生成的文件包含'asm' 編譯內核的過程是否首先安裝頭文件? 並強制編譯器來處理它們?
p.s.我想將內核的源文件轉換爲調用者 - 被調用者圖來做一些研究。所以我需要一些靜態分析工具。我確實嘗試了'call-tree',但結果充滿了錯誤,您能否介紹一些更強大的工具?
歡迎來到SO。請一次只提出一個問題,否則您完全破壞本網站的目標是成爲可搜索的知識庫。您可以輕鬆編輯您的問題,將其減少爲一個乾淨的單個問題,然後最終在單獨的線索中詢問其他人。 –
使用源樹中的副本。/usr/include中的文件被提取出來,用於用戶模式程序的導出版本,該程序可以與內核進行鏈接。 asm /目錄是特定於平臺的,而內核源代碼是不可知的,所以構建過程將指向與正在構建的配置相對應的特定目錄。你可能會發現'find'和'grep -r'命令在你的探索中很有趣...... –
Linux內核是「自我內容」,它不依賴於任何庫。這意味着內核源代碼中引用的所有頭文件也是內核的一部分。 –