2013-04-15 1 views
20

प्रसंग पहले makefile साथ संयोजित करते समय: मैं एक हैडर (event.h), एक कार्यक्रम बुलाया event.c, और मुख्य कार्यक्रम main.c. है यह प्रोग्राम संकलित किया जाएगा, पहले एक ऑब्जेक्ट प्रोग्राम (event.o), फिर एक स्थिर लाइब्रेरी (libevent.a) को एक अलग फ़ोल्डर में उत्पन्न करेगा, और उसके बाद निष्पादन योग्य प्रोग्राम work1.exe/usr/bin/ld: -lc नहीं मिल सकता है

ऐसा करने के लिए मैंने यह मेकफ़ाइल बनाया :

work1 : main.c libevent.a 
    gcc -static main.c -L./lib -levent -o work1 -Wall 

event.o: event.c 
gcc -c event.c -Wall 

libevent.a: event.o 
ar rcs lib/libevento.a event.o 

clean: 
rm work1 *.o 

makefile को क्रियान्वित करने का परिणाम इस त्रुटि की ओर जाता है:

$ make 
gcc -c event.c -Wall 
ar rcs lib/libevent.a event.o 
gcc -static main.c -L./lib -levent -o work1 -Wall 
/usr/bin/ld: cannot find -lc 
collect2: ld returned 1 exit status 
make: *** [work1] Error 1 

किसी भी विचार यहाँ क्या चल रहा है? क्या कुछ भी इंस्टॉल किए बिना इसे संकलित करने का कोई तरीका है?

/usr/bin/ld: cannot find -lc 

लिंकर सी स्थिर अपने पुस्तकालय को जोड़ने के लिए आवश्यक पुस्तकालयों नहीं मिल सकता है:

+0

'ar आरसीएस lib/libevento.a event.o' <- यहाँ या वास्तविक makefile में लेखन त्रुटि है? –

+2

ऐसा प्रतीत होता है कि आपके पास स्थिर लिंकिंग के लिए आवश्यक सी पुस्तकालय नहीं हैं। आप इसे किस प्लेटफॉर्म पर संकलित कर रहे हैं? – hoxworth

+0

इस पल में मैं CentOS के साथ संकलित कर रहा हूँ। उबंटू के साथ एक ही कार्यक्रम का परीक्षण किया गया और यह काम किया। – SealCuadrado

उत्तर

38

विशिष्ट त्रुटि निम्न पंक्ति है। आप कोशिश करते हैं और देखते हैं libc.a पहले से ही locate libc.a फोन करके अपने सिस्टम पर मौजूद कर सकते हैं। यदि यह रिटर्न मिलता है, तो उस निर्देशिका में इंगित करने के लिए उपयुक्त लाइब्रेरी ध्वज जोड़ें जिसमें libc.a शामिल है।

libc.a स्थापित नहीं है, तो आप दुर्भाग्य से पुस्तकालय स्थापित करने की आवश्यकता है, तो आप स्थिर अपने पुस्तकालय संकलित करने के लिए चाहते हैं। जब से तुम ने कहा आप CentOS पर हैं, तो आप yum install glibc-static साथ यह पूरा करने में सक्षम होना चाहिए।

संबंधित मुद्दे