Linux核心驅動 模組編譯技巧

2021-08-11 21:28:27 字數 1026 閱讀 9101

export arch=arm

export cross_compile=/usr/arm/arm-linux-

export subdirs=dir>
有時候我們無法獲取裝置的核心原始碼或者獲得的原始碼與裝置中的核心版本不同,此時如果安裝核心模組會提示exec format error錯誤,同時會在dmesg中提示version magic不符,如果我們想要強制安裝這個核心模組,需要修改version magic。

開啟以下檔案:

$/include/linux/vermagic.h
最後的部分會有乙個巨集定義,用來合成

#define vermagic_string                         \

uts_release " " \

module_vermagic_smp module_vermagic_preempt \

module_vermagic_module_unload module_vermagic_modversions \

module_arch_vermagic

其中uts_release這個巨集就是我們執行uname -r後得到的值,它標識核心的詳細版本,我們需要先在裝置上執行命令獲取該值,然後修改此處。這個巨集定義在下面這個檔案中:

$/include/generated/utsrelease.h
如果需要獲取完整的version magic,可以執行以下命令:

cat /proc/version
注意:如果強制安裝不相容的模組,可能會導致kernel panic,請務必保證所安裝的模組不依賴於當前執行的核心中不存在的元件。

Ubuntu編譯核心驅動模組

1 編寫hello world.c核心模組原始檔 2 檢視核心版本。我的主機安裝的是ubuntu14.04核心版本是3.13.0 24 generic 3 編寫makefile指令碼 4 編譯與測試 執行make命令開始編譯,編譯通過。載入核心模組 insmod hello world.ko 檢視載...

linux的驅動開發 核心模組的編譯

1.編譯核心模組的編譯器 qquad 編譯器 gcc 交叉編譯器 2.編寫編譯核心模組的makefile qquad 內部編譯 核心模組的原始檔放在核心原始碼中進行編譯,需要修改核心中的kconfig,makefile,make menuconfig qquad 靜態編譯 將核心模組編譯進uimag...

編譯Linux驅動模組

xz d linux 5.7.8.tar.xz tar xf linux 5.7.8.tar cd linux 5.7.8 make menuconfig 執行make menuconfig 報錯 error 1 unable to find the ncurses package.install ...