Tujuan
Saya mencoba menulis driver perangkat sederhana di Ubuntu. Saya ingin melakukan ini menggunakan Eclipse (atau IDE yang lebih baik yang cocok untuk pemrograman driver). Ini kodenya:
#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 );
Usaha saya
Setelah beberapa penelitian, saya memutuskan untuk menggunakan Eclipse CTD untuk mengembangkan driver (sementara saya masih tidak yakin apakah itu mendukung alat debugging multi-threading). Jadi saya:
- Menginstal Ubuntu 11.04 desktop x86 pada mesin virtual VMWare,
- Diinstal
eclipse-cdt
dan linux-header-2.6.38-8 menggunakan Synaptic Package Manager, - Membuat kode di atas yang
C Project
dinamaiTestDriver1
dan disalin untuk itu, - Mengubah perintah build default
make
,, ke perintah build kustom berikut:
make -C /lib/modules/2.6.38-8-generic/build M=/home/isaac/workspace/TestDriver1
Masalah
Saya mendapatkan kesalahan saat mencoba membangun proyek ini menggunakan gerhana. Berikut ini adalah log untuk build:
**** Membangun konfigurasi Debug untuk proyek TestDriver1 ****
make -C /lib/modules/2.6.38-8-generic/build M = / home / isaac / workspace / TestDriver1 semua
make: Memasuki direktori '/usr/src/linux-headers-2.6.38-8-generic'
make: *** Tidak ada aturan untuk menjadikan target
vmlinux', needed by
semua '. Berhenti.make: Meninggalkan direktori '/usr/src/linux-headers-2.6.38-8-generic'
Menariknya, saya tidak mendapatkan kesalahan ketika saya menggunakan shell
alih-alih eclipse
membangun proyek ini. Untuk menggunakan shell
, saya hanya membuat yang Makefile
mengandung obj-m += TestDriver1.o
dan menggunakan make
perintah di atas untuk membangun.
Jadi, pasti ada yang salah dengan gerhana Makefile
. Mungkin sedang mencari vmlinux
arsitektur (?) Atau sesuatu sementara arsitektur saat ini adalah x86. Mungkin karena VMWare?
Seperti yang saya pahami, eclipse
membuat makefile secara otomatis dan memodifikasinya secara manual akan menyebabkan kesalahan di masa depan ATAU membuat pengelolaan menjadi makefile
sulit.
Jadi, bagaimana saya bisa mengkompilasi proyek ini di eclipse?
autotools
segera memeriksa plugin. Apakah Anda tahu IDE yang lebih baik untuk pemrograman driver? Apakah Anda pikir saya (pengguna VS malas yang tidak memiliki pengalaman di linux) dapat mengelolamakefile
? Apakahmakefile
benar-benar dapat dikelola dalam proyek-proyek besar?