У меня есть простой объект ядра, который я создал для проверки в памяти ядра.Linux Kernel Module (* .ko) совместимость между ядрами
Если я построю его на своей 64-битной машине Ubuntu (3.2), он отлично работает на этой машине. Но это не будет insmod на моей 64-битной машине Ubuntu (3.9). И наоборот. Это дает мне ошибку «-1 Недопустимый модуль», если я пытаюсь запустить ее на Kernel rev, отличном от того, на котором я его построил.
Я думал, что insmod динамически связывает его с экспортируемой таблицей символов, а экспортированная таблица символов не изменяется между версиями ядра. (Он добавляется.)
Может ли кто-нибудь сказать мне, как я могу построить модуль ядра (.ko), совместимый с будущими (или прошлыми) ядрами Linux, без необходимости перестраивать его на этом ядре?
Вот мой макияж файла:
ccflags-у = -g
OBJ-м + = access_mem.o
всего: делают -C/Библиотека/модули/$ (uname оболочки -r)/построить M = $ (PWD) модули
чистый: делают -C/Библиотека/модули/$ (uname -r оболочки)/построить M = $ (PWD) чистые
Ваш Ubuntu 3.2 - это 32-битная или 64-битная версия? Тот же вопрос с вашим Ubuntu 3.9 – nouney
Оба 64-битных. Thx, чтобы напомнить мне об этой важной точке данных. –