x86_64 linux核心標頭檔的路徑
我想使用一些 linux 核心標頭檔來編譯程序。但是,如果我只是添加
-I/usr/src/linux-headers-4.4.0-36/include
它找不到linux/export.h
. 我在arch/architecture中看到了同名的文件,但我找不到amd64
orx86_64
。uname -pmi
說x86_64 x86_64 x86_64
。arch
在我的情況下,正確的目錄是什麼?系統
Linux Mint
帶有來自儲存庫的核心4.4.0.-36
。UPD:我想使用
#include <linux/platform_device.h> #include <linux/usb/g_hid.h>
你好.cpp:
#include <linux/platform_device.h> #include <linux/usb/g_hid.h> int main () { return 0; // nothing }
但是編譯器
-I /usr/src/linux-headers-4.4.0-36/include -I /usr/src/linux-headers-4.4.0-36/arch/x86/include
說了很多重新定義並且找不到<generated/timeconst.h>
. 我在/usr/src/linux-headers-4.4.0-36-generic/include
. 但是目錄中的路徑相同,-generic
我也有一些錯誤。
大多數具有 32 位和 64 位變體的體系結構都位於同一
arch
子目錄中。隨著時間的推移,這種情況發生了變化;被x64_64
合併到x86
2.6.24、2.6.25、2.6.29中。截至 4.7 仍然是一個單獨的架構。移至2.6.14 並最終在 2.6.27 中合併。早在2.6天就被合併了。sh64``sh``sparc64``sparc``arm64``ppc64``powerpc``ppc``mips64
所以 amd64 標頭在
arch/x86
.但是你通常編譯程序是針對 libc 標頭檔,而不是針對核心標頭檔。(即使它們有時具有相同的名稱,但它們有不同的內容!)檢查您是否真的需要核心標頭檔——這只發生在使用不穩定介面的程序中,這些介面可以在核心版本之間改變(例如,一些低級調試介面)。