неопределенная ссылка на «функцию» в интерфейсе сетевого устройства для пользовательского пространства. » - PullRequest
0 голосов
/ 24 февраля 2012

Я хочу использовать интерфейс сетевого устройства, экспортируемый модулем сетевого драйвера.Это моя программа devget.c

 #include<stdio.h>
 #include<linux/netdevice.h>

  void main(void)
  {
     struct net_device* device;

     device = dev_get_by_name("eth0");
     if (device == NULL)
         printf("device is NULL\n");
     else
         printf("This is a success story\n");
   }

Я кросс-компилирую это.неопределенная ссылка на `dev_get_by_name '.Теперь эта функция определена как прототип в файле /linux/netdevice.h.Я компилирую это с помощью agcc, давая пути включения в сценарии.

1 Ответ

1 голос
/ 25 февраля 2012

Вы, похоже, создаете программу пользовательского пространства, а не модуль ядра.

Программы пользовательского пространства не могут использовать функции ядра.Они могут использовать только функции из libc или других библиотек.

Вам нужно будет скомпилировать свой код как модуль ядра.
Это меняет несколько вещей - у вас нет функции main (вместо этогоу вас есть init_module, что не совпадает), и процесс компиляции отличается (не только gcc -o myprog myprog.c).

Я предлагаю вам прочитать основную книгу о разработке ядра.

...