Я работаю над модулем ядра для проекта, использующего Yocto Linux (версия 1.3). Я хочу использовать заголовки ядра, компилятор и библиотеки из моего проекта Yocto, но разрабатывать модуль ядра без необходимости каждый раз запускать bitbake. Моим первоначальным решением было выполнить задачу devshell и извлечь переменные среды, используя что-то вроде этого:
bitbake mykernel -c devshell
Затем в новом окне xterm мне открылся bitbake:
env | sed 's/\=\(.*\)/\="\1"/' > buildenv #put quotes around r-values in env listing
^D #(I leave the devshell)
Затем скопируйте это в мой каталог разработки и отправьте его перед запуском make со всеми его параметрами.
KERNEL_PATH=/mypathto/build/tmp/sysroots/socfpga_cyclone5/usr/src/kernel
source ./buildenv && make -C $KERNEL_PATH V=1 M=`pwd` \
ARCH=arm CROSS-COMPILE=arm-linux-gnueabihf- \
KERNEL_VERSION=3.13.0-00298-g3c7cbb9 \
CC="arm-linux-gnueabihf-gcc -mno-thumb-interwork -marm" \
LD=arm-linux-gnueabihf-ld AR=arm-linux-gnueabihf-ar
Теперь к моим вопросам:
Я ошибаюсь в этом? Каков рекомендуемый способ кросс-разработки модулей ядра? Я делаю это так, потому что не хочу открывать оболочку bitbake devshell и каждый раз заниматься разработкой кода в ней.
Такого рода работы (я могу компилировать рабочие модули), но сценарий make выдает мне сообщение об ошибке, в котором говорится, что конфигурация ядра недействительна. Я также пробовал это с KERNEL_PATH, установленным в каталог git пакета ядра (build / tmp / work /// git (который содержит то, что кажется действительным файлом .config), и я получаю аналогичную ошибку.
Как я могу извлечь env без необходимости открывать оболочку разработчика? Я хотел бы написать сценарий, который извлекает его, чтобы моим коллегам не приходилось делать это вручную. Команда devshell открывает полностью отдельное окно Xterm, что несколько снижает его скриптируемость ...