เป้าหมาย
ฉันพยายามเขียนโปรแกรมควบคุมอุปกรณ์อย่างง่ายบน 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เพื่อพัฒนาไดรเวอร์ (ในขณะที่ฉันยังไม่แน่ใจว่ามันรองรับเครื่องมือการดีบักแบบมัลติเธรด) ดังนั้นฉัน:
- ติดตั้งUbuntu 11.04 desktop x86บนเครื่องเสมือน VMWare
- ติดตั้ง
eclipse-cdt
และlinux-headers-2.6.38-8โดยใช้ Synaptic Package Manager - สร้างรหัสที่มี
C Project
ชื่อTestDriver1
และคัดลอกแล้ววางไว้ด้านบน - เปลี่ยนคำสั่ง build เริ่มต้นเป็นคำสั่ง build
make
ที่กำหนดเองต่อไปนี้:
make -C /lib/modules/2.6.38-8-generic/build M=/home/isaac/workspace/TestDriver1
ปัญหา
ฉันได้รับข้อผิดพลาดเมื่อพยายามสร้างโครงการโดยใช้ eclipse นี่คือบันทึกสำหรับบิลด์:
**** โครงสร้างของการตั้งค่า Debug สำหรับโครงการ TestDriver1 ****
ทำให้ -C /lib/modules/2.6.38-8-generic/build M = / home / isaac / พื้นที่ทำงาน / TestDriver1 ทั้งหมด
ทำ: การป้อนไดเรกทอรี '/usr/src/linux-headers-2.6.38-8-generic'
ทำ: *** ไม่มีกฎที่จะทำให้เป้าหมาย
vmlinux', needed by
ทั้งหมด ' หยุด.ทำให้: ออกจากไดเรกทอรี '/usr/src/linux-headers-2.6.38-8-generic'
ที่น่าสนใจฉันไม่มีข้อผิดพลาดเมื่อฉันใช้shell
แทนที่จะeclipse
สร้างโครงการนี้ หากต้องการใช้shell
ฉันเพิ่งสร้างMakefile
ที่มีobj-m += TestDriver1.o
และใช้make
คำสั่งด้านบนเพื่อสร้าง
Makefile
ดังนั้นสิ่งที่จะต้องมีความผิดปกติกับคราส อาจจะมองหาvmlinux
สถาปัตยกรรม (?) หรือบางสิ่งในขณะที่สถาปัตยกรรมปัจจุบันคือ x86 อาจเป็นเพราะ VMWare
ดังที่ฉันเข้าใจแล้วeclipse
สร้าง makefiles โดยอัตโนมัติและแก้ไขด้วยตนเองจะทำให้เกิดข้อผิดพลาดในอนาคตหรือจัดการmakefile
ยาก
ดังนั้นฉันจะรวบรวมโครงการนี้ใน eclipse ได้อย่างไร
autotools
ปลั๊กอินในไม่ช้า คุณรู้จัก IDE ที่ดีกว่าสำหรับการเขียนโปรแกรมควบคุมหรือไม่ คุณคิดว่าฉัน (ผู้ใช้ VS ที่ขี้เกียจที่ไม่มีประสบการณ์ใน linux) สามารถจัดการได้makefile
หรือไม่? คือmakefile
s จัดการได้จริงๆในโครงการขนาดใหญ่?