Mục tiêu
Tôi đang cố gắng viết một trình điều khiển thiết bị đơn giản trên Ubuntu. Tôi muốn làm điều này bằng cách sử dụng Eclipse (hoặc một IDE tốt hơn phù hợp với lập trình trình điều khiển). Đây là mã:
#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 );
Nỗ lực của tôi
Sau một số nghiên cứu, tôi quyết định sử dụng CTD Eclipse để phát triển trình điều khiển (trong khi tôi vẫn không chắc liệu nó có hỗ trợ các công cụ gỡ lỗi đa luồng không). Vì vậy, tôi:
- Đã cài đặt Ubuntu 11.04 máy tính để bàn x86 trên máy ảo VMWare,
- Đã cài đặt
eclipse-cdtvà linux-headers-2.6,38-8 bằng Trình quản lý gói Synaptic, - Tạo một mã
C Projectđược đặt tênTestDriver1và sao chép ở trên vào nó, - Đã thay đổi lệnh xây dựng mặc định
make, thành lệnh xây dựng tùy chỉnh sau:
make -C /lib/modules/2.6.38-8-generic/build M=/home/isaac/workspace/TestDriver1
Vấn đề
Tôi gặp lỗi khi tôi cố gắng xây dựng dự án này bằng nhật thực. Đây là nhật ký cho bản dựng:
**** Xây dựng cấu hình Gỡ lỗi cho dự án TestDriver1 ****
làm cho -C /lib/modules/2.6,38-8-generic / build M = / home / isaac / workspace / TestDriver1 tất cả
thực hiện: Nhập thư mục '/usr/src/linux-headers-2.6,38-8-generic'
thực hiện: *** Không có quy tắc để thực hiện mục tiêu
vmlinux', needed bytất cả '. Dừng lại.thực hiện: Rời khỏi thư mục '/usr/src/linux-headers-2.6,38-8-generic'
Thật thú vị, tôi không gặp lỗi khi tôi sử dụng shellthay vì eclipsexây dựng dự án này. Để sử dụng shell, tôi chỉ cần tạo một Makefilechứa obj-m += TestDriver1.ovà sử dụng makelệnh trên để xây dựng.
Vì vậy, một cái gì đó phải sai với nhật thực Makefile. Có thể nó đang tìm kiếm vmlinuxkiến trúc (?) Hoặc một cái gì đó trong khi kiến trúc hiện tại là x86. Có lẽ đó là vì VMWare?
Theo tôi hiểu, việc eclipsetạo các tệp tạo tệp tự động và sửa đổi thủ công sẽ gây ra lỗi trong tương lai HOẶC gây makefilekhó khăn cho việc quản lý .
Vì vậy, làm thế nào tôi có thể biên dịch dự án này trên nhật thực?
autotoolsplugin sớm. Bạn có biết IDE nào tốt hơn để lập trình trình điều khiển không? Bạn có nghĩ rằng tôi (một người dùng VS lười biếng không có kinh nghiệm về linux) có thể quản lýmakefilekhông? Làmakefilethực sự quản lý trong các dự án lớn?