сообщение об ошибке «-mrecord-mcount» при кросс-компиляции из модуля ядра

#linux #arm #cross-compiling

#linux #arm #кросс-компиляция

Вопрос:

Я пытаюсь создать модуль вне ядра и выполнить его кросс-компиляцию. Итак, я работаю над виртуальной машиной, Ubuntu, и я обновил работающее ядро до 5.15.6.

Теперь я пытаюсь скомпилировать мой очень простой модуль «Hello world». Его Makefile просто:

 obj-m  = yanivModule.o
 

и команда сборки:

 make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- -C /lib/modules/5.15.6/build/ M=$PWD modules
 

и я продолжаю сталкиваться с этим сообщением об ошибке:

 arm-linux-gnueabihf-gcc: error: unrecognized command line option ‘-mrecord-mcount’; did you mean ‘-frecord-marker=4’?
 

Кто-нибудь знает, что означает «-mrecord-mcount», как это исправить?

Я попытался отключить флаг конфигурации «CONFIG_FTRACE_MCOUNT_RECORD» и «CONFIG_HAVE_FTRACE_MCOUNT_RECORD», поскольку я где-то читал, что это может быть связано (и по имени это действительно может быть), но это не решило ошибку.

Я как бы теряюсь здесь, поскольку в обучающем видео, за которым я следую, это делается вообще без проблем.

Обновление: мне удалось устранить проблему, но я не уверен, почему она была исправлена таким образом, и почему способ, который я описал ранее, не сработал. Я загрузил ядро платы beaglebone с github: https://github.com/beagleboard/linux/tree/5.10 а затем построил его с помощью:

  1. make ARCH=arm bb.org_defconfig
  2. make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- C /home/.../beaglebone-linux-5.10/ M=$PWD modules

и только тогда сборка модуля, когда -C — это новое загруженное дерево ядра, прошла успешно без проблем.

 make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- -C /home/.../beaglebone-linux-5.10/ M=$PWD modules
 

Итак, теперь у меня осталось 2 вопроса:

  1. Что, шаг исправил проблему и чего не хватало в предыдущем способе, который я пробовал? использовался ли файл конфигурации bb.org_defconfig?
  2. Почему этот конфигурационный файл bb.org_defconfig отсутствует в последнем дереве исходных текстов ядра Linux?