Hedef
Ubuntu'da basit bir aygıt sürücüsü yazmaya çalışıyorum. Bunu Eclipse (veya sürücü programlama için uygun daha iyi bir IDE) kullanarak yapmak istiyorum. İşte kod:
#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 );
Benim gayretim
Bazı araştırmalardan sonra , sürücüyü geliştirmek için Eclipse CTD kullanmaya karar verdim (yine de çok iş parçacıklı hata ayıklama araçlarını destekleyip desteklemediğinden emin değilim). Yani ben:
- Yüklü Ubuntu 11.04 masaüstü x86 VMWare sanal makine üzerinde,
- Yüklü
eclipse-cdt
ve linux-headers-2.6.38-8 Synaptic Paket Yöneticisi kullanarak, - Üzerine
C Project
adlandırılmışTestDriver1
ve kopyalanmış bir kod oluşturduysa, - Varsayılan derleme komutu,
make
aşağıdaki özelleştirilmiş derleme komutuyla değiştirildi:
make -C /lib/modules/2.6.38-8-generic/build M=/home/isaac/workspace/TestDriver1
Sorun
Tutulmayı kullanarak bu projeyi oluşturmaya çalıştığımda bir hata alıyorum. Yapı günlüğü:
**** TestDriver1 projesi için hata ayıklama yapılandırma yapısı ****
-C /lib/modules/2.6.38-8-generic/build M = / home / isaac / workspace / TestDriver1 yap
make: '/usr/src/linux-headers-2.6.38-8-generic' dizinini girme
make: *** Hedefi yapmak için kural yok
vmlinux', needed by
'. Dur.make: '/usr/src/linux-headers-2.6.38-8-generic' dizini bırakılıyor
İlginç bir şekilde, bu projeyi oluşturmak shell
yerine kullandığımda hata eclipse
almıyorum. Kullanmak için shell
, sadece bir Makefile
içeren oluşturmak obj-m += TestDriver1.o
ve oluşturmak için yukarıdaki make
komutu kullanın.
Bu nedenle, tutulma ile ilgili bir şeyler yanlış olmalı Makefile
. Belki vmlinux
şu anki mimari x86 iken mimariyi (?) Falan arıyor . Belki de VMWare yüzünden?
Anladığım kadarıyla, eclipse
otomatik olarak makefiles oluşturur ve manuel olarak değiştirmek gelecekte hatalara neden olur VEYA yönetimi makefile
zorlaştırır.
Peki, tutulma üzerine bu projeyi nasıl derleyebilirim?
autotools
Eklentiyi yakında kontrol edeceğim . Sürücü programlama için daha iyi bir IDE biliyor musunuz? Sence (linux'da deneyimi olmayan tembel bir VS kullanıcısı) yönetebilirmakefile
mi? Mımakefile
büyük projelerde gerçekten yönetilebilir s?