0

ARM ボード SabreLite に AODV を実装しようとしていますが、いくつかの問題に直面しています。

そこで、ここ (sourceforge.net/projects/aodvuu/) にある AODV の最新バージョンを使用します。README ファイルの指示に従いましたが、最後に次のエラーが表示されます。

kaodv-mod.c:22:27: 致命的なエラー: linux/version.h: そのようなファイルまたはディレクトリはありません #include

ボードは 3.0.35 カーネル バージョンを使用するため、ダウンロードして Makefile のカーネル ディレクトリを変更するだけです。そして、それは指示 ( http://w3.antd.nist.gov/wctg/aodv_kernel/kaodv_arm.html )に基づいて正常に動作するはずです。上記のエラーは、version.h を持っていないことを示唆していますが、チェックしたところ、すべての Linux ヘッダー ファイルがインストールされているため、そうではありません。

チュートリアル (README ファイル) のステップ 6 では、カーネル 3.0.35 をコンパイルしませんでした。これは、カーネルの若いバージョンであるため、AODV-UU に対する適切な netfilter サポートがあることを確信しているためです。(実際には、カーネル 2.4 および 2.6 での構成の提案ですが、ここでそれを行う義務はないと思います)

  • これの解決策は何ですか?
  • 続行する前に、このカーネル バージョン (3.0.35) をコンパイルする必要がありますか?
  • AODV コードを変更する必要がありますか? その場合、どのファイルを変更する必要がありますか?

前もって感謝します !!!


ご回答ありがとうございます。残念ながら、私はすでにそれを行っています。つまり、ターゲット カーネル (linux-imx6-boundary-imx_3.0.35_4.1.0) に一致するカーネル ソース ツリーを選択したということです。また、環境変数をクロス コンパイルの準備ができるように、クロス コンパイラをセットアップしました。これが出力です。

echo $CC:

arm-oe-linux-gnueabi-gcc -march=armv7-a -mthumb-interwork -mfloat-abi=hard -mfpu=neon -mtune=cortex-a9 --sysroot=/usr/local/oecore-x86_64/sysroots/cortexa9hf-vfp-neon-oe-linux-gnueabi    

私のenv変数のいくつかは次のようになります:

ARCH=arm

CROSS_COMPILE=arm-oe-linux-gnueabi-          

CFLAGS= -O2 -pipe -g -feliminate-unused-debug-types   

RANLIB=arm-oe-linux-gnueabi-ranlib

これらの設定をすべて行った後でも、エラーが発生します。カーネルを再コンパイルする必要があるとは本当に思いません

4

1 に答える 1

1

モジュールをビルドするには、ターゲット カーネルと一致する状態のカーネル ソース ツリーが必要です。つまり、新しくダウンロードされたばかりのものではありません。追加のボード固有のパッチ/ドライバー/などの存在を混同しないでください。構成用のベンダー カーネルで- ソース ツリーを使用するのに適切な状態にするには、次のことを行う必要があります。

  • 正しく設定してください: make ARCH=arm <whatever>_defconfig(および/またはボードが必要とする .config の微調整)
  • 次にビルドします。make ARCH=arm CROSS_COMPILE=<your toolchain triplet>

(前述の version.h が作成される場所)の内容、対応する、モジュールのバージョン管理のチェックサムなど、まだ存在しない重要なファイルが多数あるため、実際にカーネルをビルドする必要があります。どのアーキテクチャと特定の構成オプションが選択されたかによって、すべてが異なります。include/generatedarch/$ARCH/include/generated


質問で重要な詳細の言及を逃したのは残念ですが、リンクされたAODVをダウンロードして自分で試してみると、makefileは2.4ビルドシステム用に設計されていることが明らかになりました。 )。2.6 以降のカーネルに対してビルドするには、新しい makefile を作成する必要があります。

于 2014-08-05T20:14:11.563 に答える