এখনই আমি UNIX® পরিবেশে অ্যাডভান্সড প্রোগ্রামিং বইটি পড়া শুরু করেছি । আমি এর প্রথম কোড উদাহরণ চালানোর চেষ্টা করতে চেয়েছিলাম। আমি বৈজ্ঞানিক লিনাক্স 6.4 চালাচ্ছি।
আমি উত্স কোডটি ডাউনলোড করেছি এবং এটির README তে যেমন বলা আছে, আমি make
সঙ্কুচিত ফাইলটিতে দৌড়েছি ।
আমি প্রথম প্রোগ্রামটি লিখেছি (একটি মক ls
কমান্ড)
#include "./include/apue.h"
#include <dirent.h>
int
main(int argc, char *argv[])
{
DIR *dp;
struct dirent *dirp;
if(argc!=2)
err_quit("usage: test directory_name");
if((dp=opendir(argv[1]))==NULL)
err_sys("Can't open %s", argv[1]);
while((dirp=readdir(dp))!=NULL)
printf("%s\n", dirp->d_name);
closedir(dp);
return 0;
}
এবং এটি সঙ্কুচিত ফাইলটিতে রাখুন। বই পরামর্শ দিয়েছিলেন আমি তখন দৌড়ে: gcc myls.c
। তবে আমি এই ত্রুটিটি পেয়েছি:
# gcc myls.c
/tmp/ccWTWS2I.o: In function `main':
test.c:(.text+0x20): undefined reference to `err_quit'
test.c:(.text+0x5b): undefined reference to `err_sys'
collect2: ld returned 1 exit status
আমি কীভাবে এই সমস্যাটি সমাধান করতে পারি তা জানতে চেয়েছিলাম। আমি যে কোনও ডিরেক্টরিতে লিখি এমন একটি কোড চালাতে সক্ষম হতে চাই।
include
রয়েছে:, এতে শিরোনাম ফাইল রয়েছে apue.h
। তবে এই ডিরেক্টরিতে এটিই একমাত্র ফাইল। আসল ফাংশন সংজ্ঞা কোথায় তা আমি বুঝতে পারি না! আমি ভেবেছিলাম যে কেউ এই বইয়ের উত্স কোড ফাইলের কাঠামোর সাথে পরিচিত হতে পারে।
.h
ফাইল কাজকর্মের জন্য protypes অন্তর্ভুক্ত। তাদের বাস্তবায়নগুলি ফাইলগুলিতে রয়েছে .so
বা .a
বাক্সে উপস্থিত থাকা দরকার। এগুলি ডায়নামিক এবং স্ট্যাটিক লাইব্রেরি যা ফাংশনগুলি ধারণ করে।
apue.h
?
err_{quit,sys}
আপনি কোথা থেকে আসবেন বলে আশা করেন?