我想使用网络驱动程序模块导出的网络设备接口。这是我的程序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编译它,在脚本中给出包含路径。
答案 0 :(得分:1)
您似乎正在构建用户空间程序,而不是内核模块。
用户空间程序不能使用内核功能。他们只能使用libc或其他库中的函数。
您需要将代码编译为内核模块
这会改变一些事情 - 你没有main
函数(相反,你有init_module
,这是不一样的),编译过程也不同(不只是gcc -o myprog myprog.c
)
我建议你阅读一本关于内核开发的基础书。