Я попытался кросс-компилировать модуль ядра Linux. Моя машина для разработки - Ubuntu, а цель - RaspberryPi с Raspbian. Я загрузил правильные заголовки ядра на свой Raspberry и скопировал их на компьютер с Ubuntu для кросс-компиляции модуля, который я там написал. Процесс компиляции сработал, и я связал файлы заголовков из Raspberry в Makefile.
Когда я пытаюсь запустить кросс-скомпилированный модуль ядра на Raspberry с insmod test.ko
, появляется следующая ошибка: insmod: ERROR: could not insert module test.ko: Invalid module format
Я проверил, приняла ли кросс-компиляция правильную версию ядра. Когда я набираю uname -r
на своей Raspberry, я получаю следующее: 4.19.75-v7+
. И когда я набираю modinfo morse.ko
, показываются следующие вермаги c: 4.19.75-v7+ SMP mod_unload modversions ARMv6 p2v8
. Те же версии ядра.
В чем еще может быть проблема?
Редактировать: Я сравнил кросс-скомпилированный модуль с локально-скомпилированным модулем (modinfo), и есть небольшая разница в вермаги c переменная. Локально скомпилированный модуль использует ARMv7, а кросс-скомпилированный - только ARMv6. Как я могу правильно скомпилировать его?