লক্ষ্য
আমি উবুন্টুতে একটি সাধারণ ডিভাইস ড্রাইভার লেখার চেষ্টা করছি। আমি Eclipse (বা ড্রাইভার আইকন প্রোগ্রামিংয়ের জন্য উপযুক্ত একটি ভাল আইডিই) ব্যবহার করে এটি করতে চাই। কোডটি এখানে:
#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 );
আমার প্রচেষ্টা
কিছু গবেষণার পরে, আমি ড্রাইভার বিকাশের জন্য এক্লিপস সিটিডি ব্যবহার করার সিদ্ধান্ত নিয়েছি (যদিও আমি এখনও নিশ্চিত নই যে এটি মাল্টি-থ্রেডিং ডিবাগিং সরঞ্জামগুলি সমর্থন করে)। তাই আমি:
- VMWare ভার্চুয়াল মেশিনে উবুন্টু 11.04 ডেস্কটপ x86 ইনস্টল করা হয়েছে ,
- সিন্যাপটিক প্যাকেজ ম্যানেজার ব্যবহার করে ইনস্টল করা
eclipse-cdtএবং লিনাক্স-শিরোলেখ -২.6.৩৮-৮ , - এটির উপরে একটি
C Projectনামযুক্তTestDriver1এবং অনুলিপি কোড তৈরি করেছে, makeনিম্নলিখিত কাস্টমাইজড বিল্ড কমান্ডে ডিফল্ট বিল্ড কমান্ডটি পরিবর্তন করা হয়েছে :
make -C /lib/modules/2.6.38-8-generic/build M=/home/isaac/workspace/TestDriver1
সমস্যাটি
আমি যখন গ্রহনটি ব্যবহার করে এই প্রকল্পটি নির্মাণের চেষ্টা করি তখন আমি একটি ত্রুটি পাই। বিল্ডের জন্য এখানে লগ আছে:
**** প্রকল্পের টেস্টড্রাইভার 1 এর জন্য কনফিগারেশন তৈরি করুন ডিবাগ ****
Make -C /lib/modules/2.6.38-8- generic/build M = / home / isaac / workpace / TestDriver1 all
তৈরি করুন: ডিরেক্টরি '/usr/src/linux-headers-2.6.38-8-generic প্রবেশ করানো হচ্ছে
তৈরি করুন: ***
vmlinux', needed byসকলকে লক্ষ্য বানানোর কোনও নিয়ম নেই '। স্টপ।তৈরি করুন: ডিরেক্টরি ছেড়ে চলেছেন '/usr/src/linux-headers-2.6.38-8- জেনারিক'
মজার বিষয় হচ্ছে, আমি যখন এই প্রকল্পটি তৈরির shellপরিবর্তে ব্যবহার করি তখন আমি কোনও ত্রুটি পাই না eclipse। ব্যবহার করতে shell, আমি শুধু একটি তৈরি Makefileধারণকারী obj-m += TestDriver1.oএবং উপরোক্ত ব্যবহার makeনির্মাণের কমান্ড।
সুতরাং, গ্রহনের সাথে অবশ্যই কিছু ভুল হতে হবে Makefile। হতে পারে এটি vmlinuxআর্কিটেকচার (?) বা বর্তমানের আর্কিটেকচারটি x86 এর মতো কোনও কিছুর সন্ধান করছে । এটি ভিএমওয়্যারের কারণে হতে পারে?
আমি যেমন বুঝতে পেরেছি, eclipseস্বয়ংক্রিয়ভাবে মেকফিলগুলি তৈরি করে এবং ম্যানুয়ালি এটিকে সংশোধন করা ভবিষ্যতে ত্রুটির কারণ হতে পারে বা পরিচালনা পরিচালনা করতে makefileঅসুবিধা হয়।
সুতরাং, আমি কীভাবে এই প্রকল্পটি গ্রহনে সংকলন করতে পারি?
autotoolsশীঘ্রই প্লাগইন চেক করব । ড্রাইভার প্রোগ্রামিংয়ের জন্য আপনি কি আরও ভাল আইডিই জানেন? আপনি কি মনে করেন যে আমি (একটি অলস ভিএস ব্যবহারকারী যার লিনাক্সের অভিজ্ঞতা নেই) পরিচালনা করতে পারিmakefile?makefileবড় প্রকল্পগুলিতে কি সত্যই পরিচালনা করা যায়?