※ 引述《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