เป้าหมาย
ฉันพยายามเขียนโปรแกรมควบคุมอุปกรณ์อย่างง่ายบน 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หรือไม่? คือmakefiles จัดการได้จริงๆในโครงการขนาดใหญ่?