Makoto Satoh
makot****@yahoo*****
2005年 4月 20日 (水) 22:15:10 JST
--- Shiro Kawai <shiro****@lava*****> からのメッセージ: > > $ ldd gd.so > > libgauche.so.0 => /usr/local/lib/libgauche.so.0 (0x40023000) > > libdl.so.2 => /lib/tls/libdl.so.2 (0x400ec000) > > libcrypt.so.1 => /lib/tls/libcrypt.so.1 (0x400ef000) > > libutil.so.1 => /lib/tls/libutil.so.1 (0x4011c000) > > libm.so.6 => /lib/tls/libm.so.6 (0x4011f000) > > libpthread.so.0 => /lib/tls/libpthread.so.0 (0x40141000) > > libjpeg.so.62 => /usr/lib/libjpeg.so.62 (0x40150000) > > libfreetype.so.6 => /usr/lib/libfreetype.so.6 (0x4016f000) > > libpng12.so.0 => /usr/lib/libpng12.so.0 (0x401dc000) > > libz.so.1 => /usr/lib/libz.so.1 (0x40201000) > > libc.so.6 => /lib/tls/libc.so.6 (0x40213000) > > /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x80000000) > > で、実際、ここでlibgd.soが出てないですから、libgdがリンクされてないってことです。 > gdImageDestroyだけじゃなく、gd*系は全て未定義になってて、たまたま > 最初に表れたgdImageDestroyがエラーメッセージに出てきただけでしょう。 > > gdlib-confg --libsの出力はどうなりますか。 がーん、私は何を見ているのでしょうか。。。 $ gdlib-config --all GD library 2.0.33 includedir: /usr/include cflags: -I/usr/include ldflags: libs: -lpthread -ljpeg -lfreetype -lpng12 -lz -lm libdir: /usr/lib features: GD_JPEG GD_FREETYPE GD_PNG GD_GIF 手でMakefile.inのLIBSに-lgdを追加しました。 $ ldd gd.so libgauche.so.0 => /usr/local/lib/libgauche.so.0 (0x40021000) libdl.so.2 => /lib/tls/libdl.so.2 (0x400ea000) libcrypt.so.1 => /lib/tls/libcrypt.so.1 (0x400ed000) libutil.so.1 => /lib/tls/libutil.so.1 (0x4011a000) libm.so.6 => /lib/tls/libm.so.6 (0x4011d000) libpthread.so.0 => /lib/tls/libpthread.so.0 (0x4013f000) libjpeg.so.62 => /usr/lib/libjpeg.so.62 (0x4014e000) libfreetype.so.6 => /usr/lib/libfreetype.so.6 (0x4016d000) libpng12.so.0 => /usr/lib/libpng12.so.0 (0x401da000) libz.so.1 => /usr/lib/libz.so.1 (0x401ff000) libgd.so.2 => /usr/lib/libgd.so.2 (0x40211000) libc.so.6 => /lib/tls/libc.so.6 (0x40260000) /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x80000000) しかし今度はエラーメッセージが変わりました。 $ make check /usr/local/bin/gosh -I. test.scm > test.log Testing gd ... *** ERROR: failed to link "gd" dynamically: . /gd.so: undefined symbol: Scm_GdFontPtrClass Stack Trace: _______________________________________ make: *** [check] エラー 70 $ nm --dynamic gd.so | grep gdImageDestroy U gdImageDestroy $ nm --dynamic gd.so | grep Scm_GdFontPtrClass U Scm_GdFontPtrClass Scm_GdFontPtrClassは、 SCM_CLASS_DECL(Scm_GdFontPtrClass); #define SCM_CLASS_GDFONTPTR (&Scm_GdFontPtrClass) #define SCM_GDFONTPTR(obj) ((ScmGdFontPtr*)(obj)) #define SCM_GDFONTPTRP(obj) (SCM_XTYPEP(obj, SCM_CLASS_GDFONTPTR)) typedef struct ScmGdFontPtrRec { SCM_HEADER; gdFontPtr gdFontPtr; } ScmGdFontPtr; として使っているものです。 出来上がったgd.soに実行属性がついているのが気になりますが。