0

我想使用网络驱动模块导出的网络设备接口。这是我的程序 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 编译它,在脚本中给出包含路径。

4

1 回答 1

1

您似乎正在构建用户空间程序,而不是内核模块。

用户空间程序不能使用内核函数。他们只能使用 libc 或其他库中的函数。

您需要将代码编译为内核模块。
这改变了几件事——你没有一个main函数(相反你有init_module,这是不一样的),编译过程是不同的(不仅仅是gcc -o myprog myprog.c)。

我建议您阅读有关内核开发的基础书籍。

于 2012-02-25T19:35:46.563 回答