Не удалось получить доступ к 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.

  • VIM как c ++ IDE - автозаполнение
  • ограниченные разрешения для файла cpp
  • «Который» эквивалентен для разделяемых библиотек
  • программа «убита», как только она запускается
  • Написание собственного демона. systemd error: Не удалось прочитать PID из файла: Недопустимый аргумент
  • Перенаправление вывода при выполнении «bash -c ...» из программы C
  • Почему Ubuntu 16.04 исполняет ограниченное изображение C # после 90 секунд, а другие - 24X7?
  • Есть ли glibc API, который может найти приложение для передачи по умолчанию для типа MIME в Linux?
  • Получите вывод `posix_spawn`
  • Как создать фальшивый файл устройства, который принимает входные данные из программы C?
  • Что такое syscall-template.S?
  • Interesting Posts

    Сохранить состояние окна в DWM

    Как избавиться от «сканирования файловых систем btrfs» при запуске?

    LVM зависает при попытке создать мой узел корневого устройства

    Как получить дату создания файла на логическом томе NTFS?

    Повторение пароля во время rsync-ing файлов?

    Как заставить логический том LVM2 RAID5 охватывать дополнительный физический том?

    Прикрепления отсутствуют, когда несколько файлов прикреплены по почте

    «Виртуальное супер разрешение»

    При входе в систему Linux я могу найти ip-адреса, которые можно использовать для подключения к машине через ssh?

    Вопрос о небуферизованной эффективности ввода-вывода, представленный в APUE 3, 3,9

    Прочитайте файл по строкам и введите другую строку

    Как создать и использовать точки восстановления в Arch Linux (или Linux в целом)?

    Bash: не может вырваться из цикла «while read»; технологические замещения

    Как управлять путями при выполнении строковой команды с использованием bash -c?

    mutt: отметьте как прочитанное и удаляемое

    Linux и Unix - лучшая ОС в мире.