2011-12-07 34 views
5

पर अनिर्धारित संदर्भ एक बार जब मैंने उबंटू 11.10 स्थापित किया, तो अजीब त्रुटि दिखाई देती है। मैं अपने सी प्रोग्राम के साथ जीडी का उपयोग करना चाहता हूं, इसलिए मैंने पैकेज "libgd2-xpm-dev" स्थापित किया। सब कुछ स्थापित किया गया था - फ़ाइलें gd.h और libgd.a "/ usr/include" और "/ usr/lib" में हैं। तो, मैंने जीडी के साथ सरल कार्यक्रम संकलित करने की कोशिश की है।बहुत सरल प्रोग्राम

#include <stdio.h> 
#include <gd.h> 

int main() 
{ 
     gdImagePtr im, im_clear; 
     int black, white; 
     FILE *out1; 

     im = gdImageCreate(100, 100); 
     im_clear = gdImageCreate(100, 100); 

     white = gdImageColorAllocate(im, 255, 255, 255); 
     black = gdImageColorAllocate(im, 0, 0, 0); 
     return 0; 
} 

$ gcc -lgd gd.c 
/tmp/cc6LReuX.o: In function `main': 
gd2.c:(.text+0x19): undefined reference to `gdImageCreate' 
gd2.c:(.text+0x31): undefined reference to `gdImageCreate' 
gd2.c:(.text+0x59): undefined reference to `gdImageColorAllocate' 
gd2.c:(.text+0x81): undefined reference to `gdImageColorAllocate' 

रुको, क्या? ठीक है, चलो कुछ जांचें।

# Let's sure the lib was found. 
$ gcc -lgd_something gd.c 
/usr/bin/ld: cannot find -lgd_something 

# Lets sure we made no mistake with the symbol's name 
$ nm /usr/lib/libgd.a 
... 
00000dc0 T gdImageColorAllocate 
... 
000003b0 T gdImageCreate 

# So, everything should be ok 
$ gcc -lgd gd.c 
/tmp/cc6LReuX.o: In function `main': 
gd2.c:(.text+0x19): undefined reference to `gdImageCreate' 
gd2.c:(.text+0x31): undefined reference to `gdImageCreate' 
gd2.c:(.text+0x59): undefined reference to `gdImageColorAllocate' 
gd2.c:(.text+0x81): undefined reference to `gdImageColorAllocate' 

$ echo $LD_LIBRARY_PATH 
# Nothing 

और मुझे नहीं पता कि मैं क्या करूँगा। क्या यह जीसीसी में एक त्रुटि है या मैं कुछ गलत करता हूं। मेरे पिछले ओएस (उबंटू 10.04) पर सब ठीक काम करता है। मुझे आपके लिए कौन सी फाइल दिखानी चाहिए?

+0

की [लिंकर मुझसे कहता है यह प्रतीकों को हल नहीं कर सकता है, लेकिन वे वहाँ हो?] (संभव डुप्लिकेट http://stackoverflow.com/questions/8382153/linker-tells-me-it-cant- संकल्प-प्रतीकों-लेकिन-वे-वहां) –

उत्तर

5

बदलें:

$ gcc -lgd gd.c 

रहे हैं:

$ gcc gd.c -lgd 

:

ओह, और -Wall जोड़ने जब आप इसे पर हैं - यह मुझे बहुत हर बार दर्द (कारण link order matters!) मैं चेतावनी अक्षम लोगों के साथ संकलित लोगों को देखता हूं।

$ gcc -Wall gd.c -lgd 
+0

वाह, यह काम करता है! जीसीसी की अनोखी विशेषता। बहुत बहुत धन्यवाद। पीएस मैं हमेशा उपयोग करता हूं -वैसे, चिंता मत करो :) – lanus

+0

धन्यवाद - जो दर्द को कम करने में मदद करता है। ;-) –

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