ゴール
Ubuntuでシンプルなデバイスドライバーを記述しようとしています。私はEclipse(またはドライバープログラミングに適したより優れたIDE)を使用してこれを実行したいと考えています。これがコードです:
#include <linux/module.h>
static int __init hello_world( void )
{
printk( "hello world!\n" );
return 0;
}
static void __exit goodbye_world( void )
{
printk( "goodbye world!\n" );
}
module_init( hello_world );
module_exit( goodbye_world );
私の努力
いくつかの調査の後、ドライバーの開発にEclipse CTDを使用することにしました(マルチスレッドデバッグツールをサポートしているかどうかはまだわかりません)。だから私:
- VMWare仮想マシンにUbuntu 11.04デスクトップx86をインストールし、
- Synaptic Package Managerを使用してインストールされ
eclipse-cdt、linux-headers-2.6.38-8、 - 作成
C Projectという名前TestDriver1とそれへのコードの上にコピー&ペースト、 - デフォルトのビルドコマンドを
make次のカスタマイズされたビルドコマンドに変更しました。
make -C /lib/modules/2.6.38-8-generic/build M=/home/isaac/workspace/TestDriver1
問題
Eclipseを使用してこのプロジェクトをビルドしようとすると、エラーが発生します。ビルドのログは次のとおりです。
****プロジェクトTestDriver1の構成デバッグのビルド****
make -C /lib/modules/2.6.38-8-generic/build M = / home / isaac / workspace / TestDriver1 all
make:ディレクトリ '/usr/src/linux-headers-2.6.38-8-generic'に入ります
make:***ターゲットを
vmlinux', needed byすべて作成するルールはありません。やめる。make:ディレクトリ '/usr/src/linux-headers-2.6.38-8-generic'を残しています
興味深いことに、このプロジェクトをビルドするshell代わりにを使用してもエラーは発生しませんeclipse。使用するためにはshell、私はちょうど作成Makefile含有したobj-m += TestDriver1.o上記の使用makeのビルドにコマンドを。
だから、何かが日食で間違っている必要がありますMakefile。vmlinux現在のアーキテクチャがx86の場合、アーキテクチャ(?)または何かを探している可能性があります。たぶんそれはVMWareのせいですか?
私が理解したようにeclipse、メイクファイルを自動的に作成し、手動で変更すると、将来エラーが発生したり、管理がmakefile困難になったりします。
だから、どうすればこのプロジェクトを日食でコンパイルできますか?
autotoolsすぐにプラグインを確認します。ドライバープログラミングに適したIDEを知っていますか?私(Linuxの経験がない怠惰なVSユーザー)が管理できるとmakefile思いますか?あるmakefile大規模なプロジェクトで、sは本当に扱いやすいですか?