看板 LinuxDev 關於我們 聯絡資訊
※ 引述《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