Stack Overflow на русском Asked by k-morozov on December 26, 2021
В Vim написал простой модуль для символьного устройства. Пробую перейти на VS code – не находит хедеры.
#include <linux/module.h>
#include <linux/fs.h>
#include <linux/uaccess.h>
#include <linux/init.h>
#include <linux/slab.h>
#include <linux/cdev.h>
Начиная с linux/uaccess.h ничего не видит. JSON VS code:
"includePath": [
"${workspaceFolder}/**"
]
И вот мой makefile:
NAME = chrdev
obj-m += ${NAME}.o
all:
make -C /lib/modules/$(shell uname -r)/build M=$(PWD) modules
clean:
make -C /lib/modules/$(shell uname -r)/build M=$(PWD) clean
load:
sudo insmod ${NAME}.ko
sudo dmesg -c
unload:
sudo rmmod ${NAME}.ko
sudo dmesg -c
Дело в том, что сборка отрабатывает. Но сам VS code не видит некоторые хедеры – что угнетает. Как это починить?
Все хидеры, которые начинаются с "linux/..." - это хидеры для сборки ядра. Вы ведь написали модуль ядра ? Тогда он должен иметь доступ к символическим именам в ядре, которые определяются в ядерных хидерах.
На самом деле, существует целая технология (выражаясь современным языком - фреймворк) для сборки моlулей ядра - kbuild ). Но это отдельный разговор. В кратце - тут: http://dmilvdv.narod.ru/Translate/ELSDD/elsdd_building_kernel.html
Есть очень хорошая серия статей про разработку модулей ядра. Автор Олег Цилюрик. Посмотрите, там прямо в первой описывается, как собрать модуль в простейшем случае:
https://www.ibm.com/developerworks/ru/library/l-linux_kernel_01/index.html
Более подробно этот процесс описан здесь:
https://help.ubuntu.ru/wiki/%D1%81%D0%B1%D0%BE%D1%80%D0%BA%D0%B0_%D1%8F%D0%B4%D1%80%D0%B0
Answered by Sergey on December 26, 2021
Get help from others!
Recent Answers
Recent Questions
© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP