Не удалось получить доступ к linux / skbuff.h

Я пишу модуль ядра, где мне нужно получить доступ к переменным sk_buff . Но когда я пишу

 #include <linux/skbuff.h> 

Netbeans говорит, что не может найти этот файл заголовка.

One Solution collect form web for “Не удалось получить доступ к linux / skbuff.h”

Этот заголовок специально не установлен в /usr/include/linux даже если у вас установлены заголовки ядра. Это связано с тем, что вещи, определенные в этом заголовке, не являются частью стабильного ABI ядра; разработчикам ядра разрешено изменять что-либо в этом заголовке между любыми двумя выпусками, поэтому вы должны ссылаться на заголовки, относящиеся к версии ядра, к которой вы хотите подключить драйвер.

Для ядер 2.6+ легче получить правильное поведение с помощью стандартной схемы Makefile драйвера ядра, чем с помощью попыток подкрутить Netbeans. Система сборки драйверов версии 2.6+ делает для вас много чего, больше, чем вы получите от «простой в использовании» среды IDE, такой как Netbeans.

Возможно, вы можете получить лучшее из обоих миров. Некоторые IDE позволяют использовать его в качестве прославленного редактора, но делегируют создание внешнего инструмента make .

Если вам абсолютно необходимо делать все в Netbeans, вы можете сделать это примерно так же, как нам пришлось создавать драйверы для 2.4 и более ранних ядер. В основном, вы в конечном итоге ссылаетесь на каталоги файлов заголовков в самом исходном коде ядра. В GNU Makefile говорят, что у вас есть что-то вроде этого:

 KERNPATH=/usr/src/kernels/$(shell uname -r) CFLAGS=-I$(KERNPATH)/include 

Выполнение этого же в Netbeans, вероятно, будет от труднодоступного:

  1. У Netbeans, вероятно, нет возможности запустить команду оболочки ( uname -r ) из среды IDE как часть процесса сборки и использовать ее вывод для замены в переменную, используемую в остальной части сборки.

  2. Исходный путь ядра зависит от дистрибутива Linux. С помощью Make-файлов вы можете просто написать сценарий оболочки, чтобы обнаружить локальные данные, подобные этому, но я сомневаюсь, что вы можете сделать это с помощью Netbeans. Путь выше правилен для одной системы типа Red Hat, которую я случайно проверил при написании этого ответа. Затем я проверил систему Ubuntu и нашел те же файлы в /usr/src/linux-headers-$(uname -r)/include вместо этого. Для этого не было стандартов, пока не была разработана новая система сборки драйверов ядра 2.6.

  • Незначительное изменение команды для компиляции программы на C ++ вызывает ошибку
  • Как разрешить пользователю выполнять скрипт, принадлежащий root? Сетуид больше не работает
  • Ошибка при использовании stat, errno = 2
  • ethtool получить постоянный MAC-адрес возвращает все 0
  • Как я могу узнать, какой файл unistd.h загружен?
  • Рекомендации по книге Mono
  • Получить статистику использования CPU из программы C
  • Как убить все процессы пользователя, используя их UID
  • / usr / ucb / cc: языковой пакет дополнительного программного обеспечения не установлен
  • обработка подстановки команд в рыбах против других оболочек (sh, bash, zsh)
  • Можно ли отправлять массивы из bash в программу на C ++?
  • Linux и Unix - лучшая ОС в мире.