2011-12-07 20 views
5

Ubuntu 11.10をインストールすると、奇妙なエラーが表示されます。 CプログラムでGDを使いたいので、パッケージ "libgd2-xpm-dev"をインストールしました。すべてがインストールされました - ファイルgd.hとlibgd.aは "/ usr/include"と "/ usr/lib"にあります。だから、私はGDで簡単なプログラムをコンパイルしようとしました。非常に簡単なプログラムで未定義の参照

#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 

私は何をすればよいのでしょうか? gccのエラーですか、何か問題があります。私の以前のOS(Ubuntu 10.04)ではすべてがうまくいきます。 あなたのためにどのファイルを表示する必要がありますか?

+0

の可能複製[リンカが、それはシンボルを解決できないと言われますが、彼らはそこにいます?](http://stackoverflow.com/questions/8382153/linker-tells-me-it-cant-解決のシンボルだが、そこにある) –

答えて

5

変更:

$ gcc -lgd gd.c 

へ:

$ gcc gd.c -lgd 

(理由:link order matters!)

ああ、あなたはそれでいる間-Wallを追加する - それは非常にすべての時間を私に痛み私は、警告を出してコンパイルした人が無効になっているのを見る。

$ gcc -Wall gd.c -lgd 
+0

ああ、それは動作します! gccの自明な機能。どうもありがとう。 P.P.私はいつも-Wall、心配しないでください:) – lanus

+0

ありがとう - それは痛みを和らげるのに役立ちます。 ;-) –