ビルドルートコンパイルドライバ

ビルドルートコンパイルドライバ

私はBuildrootを使って組み込みLinuxをコンパイルしています。ターゲットMakefileを設定したので正常に動作しますが、現在USBデバイス用のドライバが必要です。私はbuildrootsを使ってLinuxをターゲットにしたホストLinuxでQt appilactions(c ++)をコンパイルしました/output/host/usr/bin/arm-none-linux-gnueabi-c++。良い結果。

私はcファイルをコンパイルしようとしています。このドライバー

私はそれをそう呼ぶ:

/output/host/usr/bin/arm-none-linux-gnueabi-gcc -Wall -D__KERNEL__ -DMODULE -I/home/buildroot-2012.08/output/build/linux-2.6.35.3/include -DMODVERSIONS -include /home/buildroot-2012.08/output/build/linux-2.6.35.3/include/config/modversions.h -I /home/buildroot-2012.08/output/build/linux-2.6.35.3/drivers/usb/serial/ -O   -c -o ftdi_sio.o ftdi_sio.c

エラーが発生します。

出力 /build/linux-2.6.35.3/include/linux/linkage.h:5: 致命的なエラー: asm/linkage.h: そのファイルまたはディレクトリがありません。

  1. ドライバのコンパイルをどのように設定する必要がありますか?
  2. ターゲットLinuxでこれを実行する他の方法はありますか?たぶん私はこれをうまくやっていないかもしれません。

ベストアンサー1

asm/ターゲットアーキテクチャへのシンボリックリンク。存在しない場合、カーネルのビルドディレクトリに一部のターゲットがありませんconfigure(存在しない場合はmodule_headers実行できます)。

コマンドライン、カスタム Makefile、または Buildroot パッケージ (使用している Buildroot のバージョン) を使用しているかどうかは問いません。

コマンドラインからカーネルモジュール(バージョン2.4まで、2.6から始まるカーネルモジュールの拡張)の.o代わりにCオブジェクトを構築しています。.o.ko

カーネルモジュールのビルド、ビルド、およびログの詳細を増やすかどうかわからない場合は、同じフラグを使用してください。

カーネルには独自の方法がありますビルディングブロックそしてBuildrootは、パッケージに関して最善の方法は、おそらくモジュールをビルドするための新しいパッケージを作成することです(そして、モジュールをビルドするために使用する他のパッケージがすでにあることを確認してください)。

この例少し古いですが、役に立つかもしれません。

編集する

モジュールがftdi_sio.koディレクトリに作成されます。/lib/modules/$(uname -r)/kernel/drivers/usb/serial/

builtin.koただし、シンボルを生成または確認しないように構成することもできます。USB_SERIAL_FTDI_SIOあなたの構成y(組み込みモジュールでなければなりませんm

/proc組み込みまたはプラグインされている場合は、ランタイムターゲットに次のインターフェイスが必要です。ftdi_sio、それを見つけなさい。

おすすめ記事