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-cdtdan linux-header-2.6.38-8 menggunakan Synaptic Package Manager, - Membuat kode di atas yang
C ProjectdinamaiTestDriver1dan 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 bysemua '. Berhenti.make: Meninggalkan direktori '/usr/src/linux-headers-2.6.38-8-generic'
Menariknya, saya tidak mendapatkan kesalahan ketika saya menggunakan shellalih-alih eclipsemembangun proyek ini. Untuk menggunakan shell, saya hanya membuat yang Makefilemengandung obj-m += TestDriver1.odan menggunakan makeperintah di atas untuk membangun.
Jadi, pasti ada yang salah dengan gerhana Makefile. Mungkin sedang mencari vmlinuxarsitektur (?) Atau sesuatu sementara arsitektur saat ini adalah x86. Mungkin karena VMWare?
Seperti yang saya pahami, eclipsemembuat makefile secara otomatis dan memodifikasinya secara manual akan menyebabkan kesalahan di masa depan ATAU membuat pengelolaan menjadi makefilesulit.
Jadi, bagaimana saya bisa mengkompilasi proyek ini di eclipse?
autotoolssegera 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? Apakahmakefilebenar-benar dapat dikelola dalam proyek-proyek besar?