私は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: そのファイルまたはディレクトリがありません。
- ドライバのコンパイルをどのように設定する必要がありますか?
- ターゲット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、それを見つけなさい。