我正在編譯一個內核模塊,我包括<asm/unistd.h>
,但我不確定編譯器是否使用/usr/includes/
(錯誤)中的unistd.h
或/usr/src/kernel-3.x.x/arch/x86/includes/
(右)。檢查什麼文件是'make',包括
我的問題是:如何檢查哪兩個編譯器使用?
此外,有沒有辦法從內核頭文件而不是從/usr/include
的文件?
我正在編譯一個內核模塊,我包括<asm/unistd.h>
,但我不確定編譯器是否使用/usr/includes/
(錯誤)中的unistd.h
或/usr/src/kernel-3.x.x/arch/x86/includes/
(右)。檢查什麼文件是'make',包括
我的問題是:如何檢查哪兩個編譯器使用?
此外,有沒有辦法從內核頭文件而不是從/usr/include
的文件?
cpp code.c | grep unistd.h
或
gcc -E code.c | grep unistd.h
爲了回答你問題的第二部分:
並且還,有沒有辦法迫使從內核頭文件,而不是從/usr/include
的一個文件?
您可以通過-nostdinc
選項gcc
:
「不要搜索標準系統目錄中的頭文件只有你用-I選項(和當前文件的目錄中指定的目錄,如果合適的話)被搜索。「
謝謝先生,我在找那:) – alexandernst
我想'gcc的-E code.c | grep unistd.h'不會打印任何東西,因爲'#include'會被它的內容替換,我認爲它在預處理後不會說「unistd.h」。我錯了嗎? –
Eregrith
@Eregrith,試試看,在我的電腦上:'david @ debian:〜$ cpp code.c | /usr/include/x86_64-linux-gnu/asm/unistd.h「1 3 4' '#5」/ usr/include/x86_64-linux-gnu/asm/grep unistd.h'返回 '#1「 unistd.h「2 3 4' –
好的,我會在幾分鐘內嘗試。如何強迫其中一條路? – alexandernst