简体   繁体   中英

ldd can't find library

I've already read this , this and this .

I've installed OpenCV in a costum path /home/luca/ParallelOpenCV/install_icpc/lib , where there is libopencv_core.so :

luca@jarvis:~$ ldd /home/luca/ParallelOpenCV/install_icpc/lib/libopencv_core.so
    linux-vdso.so.1 =>  (0x00007ffccb389000)
    libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f46af719000)
    libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f46af410000)
    libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f46af1f2000)
    librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007f46aefea000)
    libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007f46aedd0000)
    libimf.so => /opt/intel/compilers_and_libraries_2017.1.132/linux/compiler/lib/intel64/libimf.so (0x00007f46ae8e3000)
    libsvml.so => /opt/intel/compilers_and_libraries_2017.1.132/linux/compiler/lib/intel64/libsvml.so (0x00007f46ad9d8000)
    libirng.so => /opt/intel/compilers_and_libraries_2017.1.132/linux/compiler/lib/intel64/libirng.so (0x00007f46ad663000)
    libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007f46ad2e0000)
    libiomp5.so => /opt/intel/compilers_and_libraries_2017.1.132/linux/compiler/lib/intel64/libiomp5.so (0x00007f46acf3d000)
    libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007f46acd27000)
    libintlc.so.5 => /opt/intel/compilers_and_libraries_2017.1.132/linux/compiler/lib/intel64/libintlc.so.5 (0x00007f46acabc000)
    libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f46ac6f3000)
    /lib64/ld-linux-x86-64.so.2 (0x000055f67574e000)

I added the path to LD_LIBRARY_PATH and I executed ldconfig , but:

luca@jarvis:~$ ldd libopencv_core.so
ldd: ./libopencv_core.so: No such file or directory

What am I missing?

From man ldd :-

NAME

       ldd - print shared object dependencies
SYNOPSIS         top

       ldd [option]... file...
DESCRIPTION

       ldd prints the shared objects (shared libraries) required by each
       program or shared object specified on the command line.  An example
       of its use and output is the following:

       $ ldd /bin/ls
               linux-vdso.so.1 (0x00007ffcc3563000)
               libselinux.so.1 => /lib64/libselinux.so.1 (0x00007f87e5459000)
               libcap.so.2 => /lib64/libcap.so.2 (0x00007f87e5254000)
               libc.so.6 => /lib64/libc.so.6 (0x00007f87e4e92000)
               libpcre.so.1 => /lib64/libpcre.so.1 (0x00007f87e4c22000)
               libdl.so.2 => /lib64/libdl.so.2 (0x00007f87e4a1e000)
               /lib64/ld-linux-x86-64.so.2 (0x00005574bf12e000)
               libattr.so.1 => /lib64/libattr.so.1 (0x00007f87e4817000)
               libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f87e45fa000)

The output of your command:

luca@jarvis:~$ ldd libopencv_core.so
ldd: ./libopencv_core.so: No such file or directory

says that the program or shared object supposedly specified on the commandline does not exist in the implied directory = ./ = /home/luca . We know it exists in /home/luca/ParallelOpenCV/install_icpc/lib .

If you run ldd file , where file , after shell expansion, is the pathname of an existing file, then ldd will display the dynamic dependencies of that file, as discovered by the dynamic linker with its usual reliance upon the current ldconfig configuration and its usual regard to the operative LD_LIBRARY_PATH environment setting. It will not search your system for files that might be alternate candidates for a file that does not exist and display the dynamic dependencies of those candidates.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM