У меня есть Makefile, созданный по следующему примеру: модуль ядра кросс-компиляции
Я собрал ядро 4.14 Linux из более старого источника Xilinx, а затем собрал вне модуль -kernel с этим сценарием, указывающий на указанные исходные коды ядра 4.14 и заполняющий пробелы для моей конкретной архитектуры платформы. Это сработало. (Он основан на этом коде, если это имеет значение: dma-proxy. c)
Теперь мне нужна более новая версия, и я получил исходные коды Xilinx с ядром с именем 5.6.0- rc1. ( - отсюда ветка "zynqmp-so c -for-v5.7" ) Сборка этого ядра также работала нормально. Если я теперь использую чистую чистую директорию (включая скрытые файлы) с исходным кодом моего модуля и этот Makefile снова, указывая на более новые исходники ядра, он не создает ни файл .ko, ни сообщение об ошибке. Все, что я получаю, это:
make ARCH=arm64 CROSS_COMPILE="aarch64-linux-gnu-" -C /home/sk/src/XILINX/linux-xlnx SUBDIRS=/home/sk/src/XILINX/dma-proxy/driver modules
make[1]: Entering directory '/home/sk/src/XILINX/linux-xlnx'
CALL scripts/checksyscalls.sh
CALL scripts/atomic/check-atomics.sh
MODPOST 28 modules
make[1]: Leaving directory '/home/sk/src/XILINX/linux-xlnx'
Нет файла .ko в моей папке, как это было раньше при сборке с 4.14, и в нем ничего не перечисляется. Мне кажется любопытным, что в нем написано «Модули MODPOST 28», тогда как, указывая его на ядро 4.14, оно, как ожидается, говорит: «1 модуль» Что-нибудь изменилось между 4.14 и 5.x, что могло бы вызвать это?