3

ARM Linux 用に AODV をコンパイルしようとしています。カーネル バージョン 3.0.35_4.1.0 のボードとして SabreLite を使用しています。ボード用の Linux ディストリビューションを作成するために openembedded を使用していることは言及する価値があります。AODV ソース コード ( http://sourceforge.net/projects/aodvuu/ ) には README ファイルがあり、ここで少し述べたように ARM にインストールする方法を示しています。( http://w3.antd.nist.gov/wctg/aodv_kernel/kaodv_arm.html )。

2.6 以降のカーネル バージョンで使用するために、makefile をアップグレードすることができました (上記のように、カーネル バージョンは 3.0.35_4.1.0 です)。したがって、基本的に、私がやろうとしているのは、モジュール (file.ko としましょう) を作成し、それを ARM にロードする必要があるということです (insmod file.ko コマンドを使用)。

そのために、いくつかの値を以下に示すクロス コンパイラを使用しています。

  • 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

  • echo $ARCH=アーム

  • echo $CFLAGS: O2 -pipe -g -feliminate-unused-debug-types

  • echo $LD : arm-oe-linux-gnueabi-ld --sysroot=/usr/local/oecore-x86_64/sysroots/cortexa9hf-vfp-neon-oe-linux-gnueabi

  • echo $LDFLAGS : -Wl,-O1 -Wl,--hash-style=gnu -Wl,--必要に応じて -Wl,--必要に応じて

「make コマンド」を起動すると、次のエラーが表示されます。

LD [M] /home/scof/script_emulation/AODV/aodv-uu/lnx/kaodv.o

arm-oe-linux-gnueabi-ld: 認識されないオプション '-Wl,-O1'

arm-oe-linux-gnueabi-ld: 使用法に関する情報を得るには --help オプションを使用します

リンカーに問題があることを示しています。このリンカはクロス コンパイル ツールに由来するものであり、通常は触れないでください。

とにかく、上記のエラーを修正するには、次のように LDFLAGS を撤回しようとします: export LDFLAGS=''。この後、make コマンドが機能し、モジュール kaodv.ko を取得します。しかし、チェックするためにARMに挿入すると、機能しません。それは実際に私の端末をフリーズさせます

私の質問は、コンパイル時にLDFLAGSを指定する必要がありますか? LDFLAGS を撤回すると、生成されたカーネル モジュールに影響を与える可能性があります。実際、私はどこに問題があるのか​​ を理解しようとしています.LDFLAGSを手動で変更すべきではないということだけが思い浮かびます。しかし、LDFLAGS を変更しないと、認識できないオプションエラーが発生します。

それに関連する私の2番目の質問は、ARMコンパイルでのLDFLAGSの可能性のある値は何ですか

ありがとう !!

4

2 に答える 2

1

-O1リンカーに最適化を指示するオプションです。私はそれが新しいものだと信じており、あなたのリンカは少し古くなっているかもしれません. を削除-Wl,-O1してみてください。それでも動作するはずです。

于 2014-08-20T14:31:37.407 に答える