作者lungswu (宅爸爸)
看板LinuxDev
标题Re: [问题] gdb 问题
时间Tue Apr 6 13:40:45 2010
※ 引述《yshihyu (yshihyu)》之铭言:
: ※ 引述《yshihyu (yshihyu)》之铭言:
: : (gdb) r convert -resize 50% lena.bmp lenas.bmp
: : Starting program: /home/shihyu/ImageMagick-6.6.0-10/utilities/.libs/convert
: : convert -resize 50% lena.bmp lenas.bmp
: : /home/shihyu/ImageMagick-6.6.0-10/utilities/.libs/convert: error while
: : loading shared libraries: libMagickCore.so.3: cannot open shared object file:
: : No such file or directory
: : Program exited with code 0177.
: : 出现 error while loading shared libraries:
: : libMagickCore.so.3: cannot open shared object file: No such file or directory
: : 请问要怎麽解决
: : 谢谢
: __________________________________________________________________
: 我想用 gdb 去看 ImageMagick
: http://www.imagemagick.org/script/download.php
: 例如我想用gdb 看 ImageMagick-6.6.0-10/utilities/.libs 里面的 convert
: 那我出现error while loading shared libraries: libMagickCore.so.3: cannot open shared object
: file: No such file or directory
: 那我使用 set solib-search-path 指定libMagickCore.so.3 路径但还是不行
: 如果熟悉gdb的朋友 可以帮我测试一下 ImageMagick ..
: 我只有 make 没 make install
: 谢谢
迟来的回覆,可能是因为hsared library的原因,需要 LD_LIBRARY_PATH 变数补足...
================== 我部落格的文章(针对此case写的)... ====================
於native host环境中,执行程式时有时会有
error while loading shared libraries: ????????.so.?: cannot open
shared object file: No such file or directory
其可能的问题为不能找到需要的shared library,For examples...
$ pwd
/ImageMagick-6.5.7-10/utilities/.libs
$
$ ls
animate composite convert identify mogrify stream
compare conjure display import montage
$
$ echo $LD_LIBRARY_PATH
$
$ ldd convert
linux-gate.so.1 => (0xb7f23000)
libMagickCore.so.2 => not found
libMagickWand.so.2 => not found
libpthread.so.0 => /lib/tls/i686/cmov/libpthread.so.0 (0xb7efa000)
libdl.so.2 => /lib/tls/i686/cmov/libdl.so.2 (0xb7ef6000)
libm.so.6 => /lib/tls/i686/cmov/libm.so.6 (0xb7ed0000)
libc.so.6 => /lib/tls/i686/cmov/libc.so.6 (0xb7d6d000)
/lib/ld-linux.so.2 (0xb7f24000)
$
$ ./convert
./convert: error while loading shared libraries: libMagickCore.so.2:
cannot open shared object file: No such file or directory
$
以上之中,由ldd command观察convert所需要额外的library中,
没找到libMagickCore.so.2,libMagickWand.so.2此两的shared linary的所在位址,
所以会有"not found"的讯息出现。
若是以LD_LIBRARY_PATH来注册额外shared library的路径,即可解决...
$ export LD_LIBRARY_PATH=/ImageMagick-6.5.7-10/magick/.libs:/ImageMagick-6.5.7-10/wand/.libs
$
$ echo $LD_LIBRARY_PATH
/ImageMagick-6.5.7-10/magick/.libs:/ImageMagick-6.5.7-10/wand/.libs
$
$ ldd convert
linux-gate.so.1 => (0xb7ee9000)
libMagickCore.so.2 => /ImageMagick-6.5.7-10/magick/.libs/libMagickCore.so.2 (0xb7d66000)
libMagickWand.so.2 => /ImageMagick-6.5.7-10/wand/.libs/libMagickWand.so.2 (0xb7c70000)
libpthread.so.0 => /lib/tls/i686/cmov/libpthread.so.0 (0xb7c49000)
libdl.so.2 => /lib/tls/i686/cmov/libdl.so.2 (0xb7c45000)
libm.so.6 => /lib/tls/i686/cmov/libm.so.6 (0xb7c1f000)
libc.so.6 => /lib/tls/i686/cmov/libc.so.6 (0xb7abc000)
/lib/ld-linux.so.2 (0xb7eea000)
$
这样就行了...
参考资料
http://www.eyrie.org/~eagle/notes/rpath.html
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 114.137.36.194