ゴール
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は本当に扱いやすいですか?