2015-03-25 4 views
0

Я на БСП v1.1 Yocto 1.6Intel Galileo файлы добавления заголовков ядра к кресту компиляции ToolChain

Я пытаюсь установить крест компиляции набора инструментов для компиляции кода драйвера символов , но выход я получаю является

[знак @ ~ локального] $ $ {CC} first.c -o первого

first.c:1:24: fatal error: linux/init.h: No such file or directory

.#include ^compilation terminated.

Я думаю, что проблема в том, что заголовке не в инструментарии, /opt/iot-devkit/1.6.1/sysroots/i586-poky-linux/usr/include/linux/~ нет в этом месте

Я думаю, что что-то должно быть добавлено в качестве IMAGE_INSTALL или IMAGE_FEATURE, но я не знаю, что

Я на правильном пути? Кто-нибудь знает, что я должен добавить? или я полностью отключен?

ответ

2

Ну, в первую очередь, вы можете никогда построить модуль ядра, просто запустив на нем $ {CC}. Вы всегда должны использовать Makefile, который перенаправляет большую часть своей работы на исходный код Makefile.

Создание Makefile для вас модуль, состоящий из чего-то похожего на:

obj-m += hello-1.o 

all: 
    make -C $(KERNEL_SRC M=$(PWD) modules 

clean: 
    make -C $(KERNEL_SRC) M=$(PWD) clean 

Пример взят из The Linux Kernel Module Programming Guide (Обратите внимание, что фактические команды должен иметь символ табуляции для отступа).

Тогда вам нужно будет определить KERNEL_SRC как /opt/iot-devkit/1.6.1/sysroots/i586-poky-linux/usr/src/kernel/, либо в Makefile, либо из вашего call-запроса. (Использование переменной типа KERNEL_SRC гарантирует, что рецепт вашего модуля автоматически выбирает нужное место при создании с использованием битбокса).

Чтобы вручную создать свой модуль ядра:

  1. Источник * файл для окружающей среды для вашего SDK.
  2. Перейти к списку модулей.
  3. KERNEL_SRC =/opt/iot-devkit/1.6.1/sysroots/i586-poky-linux/usr/src/kernel LDFLAGS = "" make Однако это не сработает, поскольку fixdep не может быть найден. Мы исправим это вручную.
  4. кд /opt/iot-devkit/1.6.1/sysroots/i586-poky-linux/usr/src/kernel
  5. делают silentoldconfig скрипты
  6. Вернуться в каталог модулей.
  7. LDFLAGS
  8. KERNEL_SRC =/опт/ИТН-DevKit/1.6.1/sysroots/i586-убогий-Linux/USR/SRC/ядро ​​= "" делают

Это теперь должно производить hello.ko, которые вы должны быть в состоянии insmod на плате Galileo.

+0

Когда я не буду 7. я вернусь CC [M] /home/mark/GalileoDriver/hello-1.o Строительные модули, этап 2. MODPOST 1 модули /bin/sh: scripts/mod/modpost: Нет такого файла или каталога make [2]: *** [__modpost] Ошибка 127 make [1]: *** [modules] Ошибка 2 make [1]: Выход из каталога '/opt/iot-devkit/1.6.1/sysroots/i586-poky-linux/usr/src/kernel ' make: *** [все] Ошибка 2 ' Любое предложение? –

+0

Сделал ли шаг 5 ОК? 'scripts/mod/modpost' должны были быть созданы в этой точке вместе с, например, 'Скрипты/основной/fixdep'. – Anders

+0

ну, честно говоря, я продолжал бить enter я снова забегу? –