对用户空间的网络设备接口中的“`function`的未定义引用。”

时间:2012-02-24 09:09:59

标签: networking linux-kernel linux-device-driver embedded-linux android-networking

我想使用网络驱动程序模块导出的网络设备接口。这是我的程序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 个答案:

答案 0 :(得分:1)

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

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

您需要将代码编译为内核模块 这会改变一些事情 - 你没有main函数(相反,你有init_module,这是不一样的),编译过程也不同(不只是gcc -o myprog myprog.c

我建议你阅读一本关于内核开发的基础书。