0
ネットワークドライバモジュールによってエクスポートされたネットワークデバイスインターフェイスを使用したいと思います。これは私のプログラムdevget.cですユーザスペースへのネットワークデバイスインタフェースの "function"への未定義参照。 "
#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でコンパイルして、スクリプトにインクルードパスを与えます。
「dev_get_by_name」はカーネルに含まれていないようです。 – ciphor
質問はネットワークデバイスインターフェイスを取得する方法です、私は自分のデバイス内のカーネルのネットワークAPIを呼び出すことができます。このdev_get_by_nameのプロトタイプを持つカーネルヘッダー/インラインファイルを与える必要があります。私はアンドロイドOSのためにこれをコンパイルしています。私はOSを持っているカーネルを含めて、agcc getdev.c -o getdev -I android/kernelのようなコンパイル時にカーネルにインクルードするパスを与えます。ユーザー空間からの – sraddhaj
の場合、net_device構造体にアクセスすることはできません。ネットワークを構成するには、いくつかの標準インターフェースを使用する必要があります(ethtool、ifconfig)。それ以外の場合は、代わりにカーネルにコードを書く必要があります –