組み込みLinuxのコンパイルにBuildrootを使用しています。ターゲットのMakefile構成があるのでうまく機能しますが、USBデバイス用のドライバーが必要になりました。 buildroots /output/Host/usr/bin/arm-none-linux-gnueabi-c++
を使用して、ホストLinuxでQt appilactions(c ++)をコンパイルしてLinuxをターゲットにすることができます。うまく機能します。
今私は このドライバー の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
エラーが発生します:
output/build/linux-2.6.35.3/include/linux/linkage.h:5:致命的なエラー:asm/linkage.h:そのようなファイルまたはディレクトリはありません
_asm/
_は、ターゲットアーキテクチャへのシンボリックリンクです。存在しない場合は、カーネルビルドディレクトリconfigure
にターゲットがない可能性があります(そうでない場合は、_module_headers
_だけで作成できます)
コマンドライン、カスタムMakefile、またはBuildrootパッケージ(どのバージョンのBuildrootを使用しているか)を使用しているかどうかは、質問からは明らかではありません。
コマンドラインは、カーネルモジュールではなくCオブジェクト_.o
_を構築しています(_.o
_はバージョン2.4までカーネルモジュールの拡張でしたが、2.6からは_.ko
_です)
フラグについてよくわからない場合は、カーネルモジュールのビルド、ビルド、ログの詳細度を上げてから、同じものを使用してください。
カーネルには モジュールのビルド への道があり、Buildrootにはパッケージへの道があります。おそらく、モジュールをビルドするための新しいパッケージを作成するのが最善です(他にビルドするパッケージがすでにあるかどうかを確認してください)モジュール)。
この例 は少し古いですが、おそらく助けになります。
編集
_ftdi_sio.ko
_モジュールはディレクトリ/lib/modules/$(uname -r)/kernel/drivers/usb/serial/
に生成されます
ただし、builtin
として構成することもできるため、_.ko
_が生成されない場合は、 構成 のシンボル SB_SERIAL_FTDI_SIO を確認してください(モジュールの組み込みy
の場合はm
である必要があります) )。
組み込みまたは挿入されている場合は、実行時に ftdi_sio というターゲットに_/proc
_インターフェイスが存在するはずです。それを見つけてください。