Ник:
Пароль:

Контакты

E-mail: info@starterkit.ru
тел.: +7 922 680-21-73
тел.: +7 922 680-21-74
Телеграм: t.me/starterkit_ru
Партнеры:
otladka.com.ua - г.Киев

Способы оплаты

User Info


Добро пожаловать,
Guest

Регистрация или входРегистрация или вход
Потеряли пароль?Потеряли пароль?

Ник:
Пароль:

ПользователейПользователей:1
Поисковых ботовПоисковых ботов:3
ГостейГостей:1

ОбновитьПодробнееВсегоВсего:5
Форум » starterkit.ru » Embedded Linux
Заголовочные файлы ядра для компиляции драйвера
simark1979
Добавлено 08.10.2017 23:20 Редактировалось 08.10.2017 23:54
0
Сообщение: 1
simark1979
0

Пункты: 6256
Регистрация: 03.10.2012
Пол: Мужчина
Пытаюсь скомпилировать модуль ядра, но компилятор не находит #include <linux/module.h>

По-умолчанию в кросс-компиляторе идет ссыль на sysroot, которая видимо формируется билдрутом), где действительно нет этого заголовочного файла.
# arm-linux-gnueabihf-gcc -print-sysroot
/home/user/bsp/imx6s/buildroot/targets/system/host/usr/arm-buildroot-linux-gnueabihf/sysroot

Но этот заголовочный нашел в папке с собранным ядром.
В мэйк файле компилятор вызвал с опцией --sysroot, где указал путь к заголовочникам ядра

Но толку нет:
#make
module.c:3:20: fatal error: module.h: Нет такого файла или каталога

Возможно ли чтобы заголовочные ядра легли при сборке билдрутом?
У меня сборка ядра вызывается из билдрута

====================================================

module.c
#define MODULE
#define __KERNEL__
#include <linux/module.h>

int init_module()
{
return 0;
}

void cleanup_module()
{
return;
}



Makefile:
GCC=/home/user/bsp/imx6s/buildroot/targets/system/host/usr/bin/arm-linux-gnueabihf-gcc
SYSROOT=/home/user/bsp/imx6s/buildroot/targets/system/build/linux-custom/include
MODFLAGS:= -O3 -Wall -DLINUX --sysroot=$(SYSROOT)
module.o: module.c

$(GCC) $(MODFLAGS) -c module.c:
Спуститься к концу Подняться к началу
Персональная информация
sasamy
Добавлено 09.10.2017 01:55 Редактировалось 09.10.2017 03:02 Сообщение: 2
sasamy
4.70

Пункты: 76899
Регистрация: 14.08.2009
Цитата

В мэйк файле компилятор вызвал с опцией --sysroot, где указал путь к заголовочникам ядра


в sysroot заголовки для пространства пользователя, в ядре свой API и для модуля ядра нужны заголовки kernel api

https://www.kernel.org/doc/Documentation/kbuild/modules.txt

Цитата

To build external modules, you must have a prebuilt kernel available
that contains the configuration and header files used in the build.
Also, the kernel must have been built with modules enabled.


Цитата

Но толку нет:


тут архив с простейшим модулем ядра, там есть build.sh для сборки - поменяйте там пути для своей системы

https://yadi.sk/d/7lEMwo0M3NaZaj

как собирать в buildroot можно для примера посмотреть тут

http://www.starterkit.ru/html/index.php?name=forum&op=view&id=28015
Спуститься к концу Подняться к началу
Персональная информация
simark1979
Добавлено 09.10.2017 07:04 Сообщение: 3
simark1979
0

Пункты: 6256
Регистрация: 03.10.2012
Пол: Мужчина
Спасибо, архив с примером помог!
Спуститься к концу Подняться к началу
Персональная информация
dgustica
Добавлено 13.10.2017 17:55 Сообщение: 4
dgustica
0

Пункты: 19
Регистрация: 13.10.2017
Пол: Женщина
Из: Космос
А чего вы на Линукс переходите? Винда же проще в разы:))
Спуститься к концу Подняться к началу
Персональная информация
fpga
Добавлено 29.10.2017 14:16 Сообщение: 5
fpga
5

Пункты: 1118
Регистрация: 03.06.2009
Цитата
А чего вы на Линукс переходите? Винда же проще в разы:))
Надеюсь это сарказм. Иначе, проще в чем?
Спуститься к концу Подняться к началу
Персональная информация
Форум » starterkit.ru » Embedded Linux