अभी-अभी मैंने पुस्तक पढ़ना शुरू किया है: 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}
से आने की उम्मीद करते हैं?