Я хочу использовать интерфейс сетевого устройства, экспортируемый модулем сетевого драйвера. Это моя программа 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");
}
Я крест, компилируя это. undefined ссылка на `dev_get_by_name '. Теперь эта функция определяется как прототип в файле /linux/netdevice.h. Я скомпилирую это с помощью agcc, давая пути include в скрипте.
Похоже, что 'dev_get_by_name' не входит в ядро. – ciphor
Вопрос в том, как получить интерфейс сетевого устройства, поэтому я могу назвать сетевой API для ядра на своем устройстве. Мне нужно предоставить заголовки ядра/inlcude файлы, которые будут иметь прототипы для этого dev_get_by_name. Я компилирую это для ОС Android, я включаю ядро с ОС и даю путь к ядру при компиляции, такой как agcc getdev.c -o getdev -I android/kernel. – sraddhaj
из пользовательского пространства, вы не можете получить доступ к структуре net_device. Вы должны использовать некоторые стандартные интерфейсы для настройки вашей сети (ethtool, ifconfig). В противном случае вы должны написать код в ядре вместо этого –