Library in ... hidden by files in ...

Hello,

I’m getting a build warning when trying to compile caffe after install cudnn using CMake:

runtime library [libcudnn.so.7] in /usr/lib/aarch64-linux-gnu may be hidden by files in:
      /usr/local/cuda-9.0/lib64

I’m wondering if anyone has seen this type of issue before and knows how to fix it, it seems like it’s just a path configuration problem.

Here’s the full output:

nvidia@tegra-ubuntu:~/caffe/build$ cmake ..

-- The C compiler identification is GNU 5.4.0
-- The CXX compiler identification is GNU 5.4.0
-- Check for working C compiler: /usr/bin/cc
-- Check for working C compiler: /usr/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Looking for pthread.h
-- Looking for pthread.h - found
-- Looking for pthread_create
-- Looking for pthread_create - not found
-- Looking for pthread_create in pthreads
-- Looking for pthread_create in pthreads - not found
-- Looking for pthread_create in pthread
-- Looking for pthread_create in pthread - found
-- Found Threads: TRUE  
-- Boost version: 1.58.0
-- Found the following Boost libraries:
--   system
--   thread
--   filesystem
--   chrono
--   date_time
--   atomic
-- Found GFlags: /usr/include  
-- Found gflags  (include: /usr/include, library: /usr/lib/aarch64-linux-gnu/libgflags.so)
-- Found Glog: /usr/include  
-- Found glog    (include: /usr/include, library: /usr/lib/aarch64-linux-gnu/libglog.so)
-- Found Protobuf: /usr/lib/aarch64-linux-gnu/libprotobuf.so  
-- Found PROTOBUF Compiler: /usr/bin/protoc
-- Found HDF5: /usr/lib/aarch64-linux-gnu/hdf5/serial/lib/libhdf5_hl.so;/usr/lib/aarch64-linux-gnu/hdf5/serial/lib/libhdf5.so;/usr/lib/aarch64-linux-gnu/libpthread.so;/usr/lib/aarch64-linux-gnu/libsz.so;/usr/lib/aarch64-linux-gnu/libz.so;/usr/lib/aarch64-linux-gnu/libdl.so;/usr/lib/aarch64-linux-gnu/libm.so (found version "1.8.16") 
-- Found LMDB: /usr/include  
-- Found lmdb    (include: /usr/include, library: /usr/lib/aarch64-linux-gnu/liblmdb.so)
-- Found LevelDB: /usr/include  
-- Found LevelDB (include: /usr/include, library: /usr/lib/aarch64-linux-gnu/libleveldb.so)
-- Found Snappy: /usr/include  
-- Found Snappy  (include: /usr/include, library: /usr/lib/aarch64-linux-gnu/libsnappy.so)
-- CUDA detected: 9.0
-- Found cuDNN: ver. 7.1.2 found (include: /usr/local/cuda-9.0/include, library: /usr/lib/aarch64-linux-gnu/libcudnn.so)
-- Added CUDA NVCC flags for: sm_62
-- OpenCV found (/opt/ros/kinetic/share/OpenCV-3.3.1)
-- Found Atlas: /usr/include  
-- Found Atlas (include: /usr/include library: /usr/lib/libatlas.so lapack: /usr/lib/liblapack.so
-- Found PythonInterp: /usr/bin/python2.7 (found suitable version "2.7.12", minimum required is "2.7") 
-- Found PythonLibs: /usr/lib/aarch64-linux-gnu/libpython2.7.so (found suitable version "2.7.12", minimum required is "2.7") 
-- Found NumPy: /usr/lib/python2.7/dist-packages/numpy/core/include (found suitable version "1.11.0", minimum required is "1.7.1") 
-- NumPy ver. 1.11.0 found (include: /usr/lib/python2.7/dist-packages/numpy/core/include)
-- Boost version: 1.58.0
-- Found the following Boost libraries:
--   python
-- Found Doxygen: /usr/bin/doxygen (found version "1.8.11") 
-- Detected Doxygen OUTPUT_DIRECTORY: ./doxygen/
-- Found Git: /usr/bin/git (found version "2.7.4") 
-- 
-- ******************* Caffe Configuration Summary *******************
-- General:
--   Version           :   1.0.0
--   Git               :   1.0-98-g18b09e8
--   System            :   Linux
--   C++ compiler      :   /usr/bin/c++
--   Release CXX flags :   -O3 -DNDEBUG -fPIC -Wall -Wno-sign-compare -Wno-uninitialized
--   Debug CXX flags   :   -g -fPIC -Wall -Wno-sign-compare -Wno-uninitialized
--   Build type        :   Release
-- 
--   BUILD_SHARED_LIBS :   ON
--   BUILD_python      :   ON
--   BUILD_matlab      :   OFF
--   BUILD_docs        :   ON
--   CPU_ONLY          :   OFF
--   USE_OPENCV        :   ON
--   USE_LEVELDB       :   ON
--   USE_LMDB          :   ON
--   USE_NCCL          :   OFF
--   ALLOW_LMDB_NOLOCK :   OFF
-- 
-- Dependencies:
--   BLAS              :   Yes (Atlas)
--   Boost             :   Yes (ver. 1.58)
--   glog              :   Yes
--   gflags            :   Yes
--   protobuf          :   Yes (ver. 2.6.1)
--   lmdb              :   Yes (ver. 0.9.17)
--   LevelDB           :   Yes (ver. 1.18)
--   Snappy            :   Yes (ver. 1.1.3)
--   OpenCV            :   Yes (ver. 3.3.1)
--   CUDA              :   Yes (ver. 9.0)
-- 
-- NVIDIA CUDA:
--   Target GPU(s)     :   Auto
--   GPU arch(s)       :   sm_62
--   cuDNN             :   Yes (ver. 7.1.2)
-- 
-- Python:
--   Interpreter       :   /usr/bin/python2.7 (ver. 2.7.12)
--   Libraries         :   /usr/lib/aarch64-linux-gnu/libpython2.7.so (ver 2.7.12)
--   NumPy             :   /usr/lib/python2.7/dist-packages/numpy/core/include (ver 1.11.0)
-- 
-- Documentaion:
--   Doxygen           :   /usr/bin/doxygen (1.8.11)
--   config_file       :   /home/nvidia/caffe/.Doxyfile
-- 
-- Install:
--   Install path      :   /home/nvidia/caffe/build/install
-- 
-- Configuring done
CMake Warning (dev) in src/caffe/CMakeLists.txt:
  Policy CMP0022 is not set: INTERFACE_LINK_LIBRARIES defines the link
  interface.  Run "cmake --help-policy CMP0022" for policy details.  Use the
  cmake_policy command to set the policy and suppress this warning.

  Target "caffe" has an INTERFACE_LINK_LIBRARIES property which differs from
  its LINK_INTERFACE_LIBRARIES properties.

  INTERFACE_LINK_LIBRARIES:

    caffeproto;/usr/lib/aarch64-linux-gnu/libboost_system.so;/usr/lib/aarch64-linux-gnu/libboost_thread.so;/usr/lib/aarch64-linux-gnu/libboost_filesystem.so;/usr/lib/aarch64-linux-gnu/libboost_chrono.so;/usr/lib/aarch64-linux-gnu/libboost_date_time.so;/usr/lib/aarch64-linux-gnu/libboost_atomic.so;/usr/lib/aarch64-linux-gnu/libpthread.so;/usr/lib/aarch64-linux-gnu/libglog.so;/usr/lib/aarch64-linux-gnu/libgflags.so;$<$<NOT:$<CONFIG:DEBUG>>:/usr/lib/aarch64-linux-gnu/libprotobuf.so>;$<$<CONFIG:DEBUG>:/usr/lib/aarch64-linux-gnu/libprotobuf.so>;-lpthread;/usr/lib/aarch64-linux-gnu/hdf5/serial/lib/libhdf5_hl.so;/usr/lib/aarch64-linux-gnu/hdf5/serial/lib/libhdf5.so;/usr/lib/aarch64-linux-gnu/libpthread.so;/usr/lib/aarch64-linux-gnu/libsz.so;/usr/lib/aarch64-linux-gnu/libz.so;/usr/lib/aarch64-linux-gnu/libdl.so;/usr/lib/aarch64-linux-gnu/libm.so;/usr/lib/aarch64-linux-gnu/hdf5/serial/lib/libhdf5_hl.so;/usr/lib/aarch64-linux-gnu/hdf5/serial/lib/libhdf5.so;/usr/lib/aarch64-linux-gnu/libpthread.so;/usr/lib/aarch64-linux-gnu/libsz.so;/usr/lib/aarch64-linux-gnu/libz.so;/usr/lib/aarch64-linux-gnu/libdl.so;/usr/lib/aarch64-linux-gnu/libm.so;/usr/lib/aarch64-linux-gnu/liblmdb.so;/usr/lib/aarch64-linux-gnu/libleveldb.so;/usr/local/cuda-9.0/lib64/libcudart.so;/usr/local/cuda-9.0/lib64/libcurand.so;/usr/local/cuda-9.0/lib64/libcublas.so;/usr/lib/aarch64-linux-gnu/libcudnn.so;opencv_core;opencv_highgui;opencv_imgproc;opencv_imgcodecs;/usr/lib/liblapack.so;/usr/lib/libcblas.so;/usr/lib/libatlas.so;/usr/lib/aarch64-linux-gnu/libboost_python.so

  LINK_INTERFACE_LIBRARIES:

    caffeproto;/usr/lib/aarch64-linux-gnu/libboost_system.so;/usr/lib/aarch64-linux-gnu/libboost_thread.so;/usr/lib/aarch64-linux-gnu/libboost_filesystem.so;/usr/lib/aarch64-linux-gnu/libboost_chrono.so;/usr/lib/aarch64-linux-gnu/libboost_date_time.so;/usr/lib/aarch64-linux-gnu/libboost_atomic.so;/usr/lib/aarch64-linux-gnu/libpthread.so;/usr/lib/aarch64-linux-gnu/libglog.so;/usr/lib/aarch64-linux-gnu/libgflags.so;/usr/lib/aarch64-linux-gnu/libprotobuf.so;-lpthread;/usr/lib/aarch64-linux-gnu/hdf5/serial/lib/libhdf5_hl.so;/usr/lib/aarch64-linux-gnu/hdf5/serial/lib/libhdf5.so;/usr/lib/aarch64-linux-gnu/libpthread.so;/usr/lib/aarch64-linux-gnu/libsz.so;/usr/lib/aarch64-linux-gnu/libz.so;/usr/lib/aarch64-linux-gnu/libdl.so;/usr/lib/aarch64-linux-gnu/libm.so;/usr/lib/aarch64-linux-gnu/hdf5/serial/lib/libhdf5_hl.so;/usr/lib/aarch64-linux-gnu/hdf5/serial/lib/libhdf5.so;/usr/lib/aarch64-linux-gnu/libpthread.so;/usr/lib/aarch64-linux-gnu/libsz.so;/usr/lib/aarch64-linux-gnu/libz.so;/usr/lib/aarch64-linux-gnu/libdl.so;/usr/lib/aarch64-linux-gnu/libm.so;/usr/lib/aarch64-linux-gnu/liblmdb.so;/usr/lib/aarch64-linux-gnu/libleveldb.so;/usr/local/cuda-9.0/lib64/libcudart.so;/usr/local/cuda-9.0/lib64/libcurand.so;/usr/local/cuda-9.0/lib64/libcublas.so;/usr/lib/aarch64-linux-gnu/libcudnn.so;opencv_core;opencv_highgui;opencv_imgproc;opencv_imgcodecs;/usr/lib/liblapack.so;/usr/lib/libcblas.so;/usr/lib/libatlas.so;/usr/lib/aarch64-linux-gnu/libboost_python.so

This warning is for project developers.  Use -Wno-dev to suppress it.

CMake Warning at src/caffe/CMakeLists.txt:23 (add_library):
  Cannot generate a safe runtime search path for target caffe because files
  in some directories may conflict with libraries in implicit directories:

    runtime library [libcudnn.so.7] in /usr/lib/aarch64-linux-gnu may be hidden by files in:
      /usr/local/cuda-9.0/lib64

  Some of these libraries may not be found correctly.


CMake Warning at src/caffe/test/CMakeLists.txt:29 (add_executable):
  Cannot generate a safe runtime search path for target test.testbin because
  files in some directories may conflict with libraries in implicit
  directories:

    runtime library [libcudnn.so.7] in /usr/lib/aarch64-linux-gnu may be hidden by files in:
      /usr/local/cuda-9.0/lib64

  Some of these libraries may not be found correctly.


CMake Warning at tools/CMakeLists.txt:14 (add_executable):
  Cannot generate a safe runtime search path for target extract_features
  because files in some directories may conflict with libraries in implicit
  directories:

    runtime library [libcudnn.so.7] in /usr/lib/aarch64-linux-gnu may be hidden by files in:
      /usr/local/cuda-9.0/lib64

  Some of these libraries may not be found correctly.


CMake Warning at tools/CMakeLists.txt:14 (add_executable):
  Cannot generate a safe runtime search path for target
  upgrade_net_proto_text because files in some directories may conflict with
  libraries in implicit directories:

    runtime library [libcudnn.so.7] in /usr/lib/aarch64-linux-gnu may be hidden by files in:
      /usr/local/cuda-9.0/lib64

  Some of these libraries may not be found correctly.


CMake Warning at tools/CMakeLists.txt:14 (add_executable):
  Cannot generate a safe runtime search path for target convert_imageset
  because files in some directories may conflict with libraries in implicit
  directories:

    runtime library [libcudnn.so.7] in /usr/lib/aarch64-linux-gnu may be hidden by files in:
      /usr/local/cuda-9.0/lib64

  Some of these libraries may not be found correctly.


CMake Warning at tools/CMakeLists.txt:14 (add_executable):
  Cannot generate a safe runtime search path for target
  upgrade_net_proto_binary because files in some directories may conflict
  with libraries in implicit directories:

    runtime library [libcudnn.so.7] in /usr/lib/aarch64-linux-gnu may be hidden by files in:
      /usr/local/cuda-9.0/lib64

  Some of these libraries may not be found correctly.


CMake Warning at tools/CMakeLists.txt:14 (add_executable):
  Cannot generate a safe runtime search path for target compute_image_mean
  because files in some directories may conflict with libraries in implicit
  directories:

    runtime library [libcudnn.so.7] in /usr/lib/aarch64-linux-gnu may be hidden by files in:
      /usr/local/cuda-9.0/lib64

  Some of these libraries may not be found correctly.


CMake Warning at tools/CMakeLists.txt:14 (add_executable):
  Cannot generate a safe runtime search path for target caffe.bin because
  files in some directories may conflict with libraries in implicit
  directories:

    runtime library [libcudnn.so.7] in /usr/lib/aarch64-linux-gnu may be hidden by files in:
      /usr/local/cuda-9.0/lib64

  Some of these libraries may not be found correctly.


CMake Warning at tools/CMakeLists.txt:14 (add_executable):
  Cannot generate a safe runtime search path for target
  upgrade_solver_proto_text because files in some directories may conflict
  with libraries in implicit directories:

    runtime library [libcudnn.so.7] in /usr/lib/aarch64-linux-gnu may be hidden by files in:
      /usr/local/cuda-9.0/lib64

  Some of these libraries may not be found correctly.


CMake Warning at examples/CMakeLists.txt:11 (add_executable):
  Cannot generate a safe runtime search path for target
  convert_mnist_siamese_data because files in some directories may conflict
  with libraries in implicit directories:

    runtime library [libcudnn.so.7] in /usr/lib/aarch64-linux-gnu may be hidden by files in:
      /usr/local/cuda-9.0/lib64

  Some of these libraries may not be found correctly.


CMake Warning at examples/CMakeLists.txt:11 (add_executable):
  Cannot generate a safe runtime search path for target classification
  because files in some directories may conflict with libraries in implicit
  directories:

    runtime library [libcudnn.so.7] in /usr/lib/aarch64-linux-gnu may be hidden by files in:
      /usr/local/cuda-9.0/lib64

  Some of these libraries may not be found correctly.


CMake Warning at examples/CMakeLists.txt:11 (add_executable):
  Cannot generate a safe runtime search path for target convert_mnist_data
  because files in some directories may conflict with libraries in implicit
  directories:

    runtime library [libcudnn.so.7] in /usr/lib/aarch64-linux-gnu may be hidden by files in:
      /usr/local/cuda-9.0/lib64

  Some of these libraries may not be found correctly.


CMake Warning at examples/CMakeLists.txt:11 (add_executable):
  Cannot generate a safe runtime search path for target convert_cifar_data
  because files in some directories may conflict with libraries in implicit
  directories:

    runtime library [libcudnn.so.7] in /usr/lib/aarch64-linux-gnu may be hidden by files in:
      /usr/local/cuda-9.0/lib64

  Some of these libraries may not be found correctly.


CMake Warning at python/CMakeLists.txt:8 (add_library):
  Cannot generate a safe runtime search path for target pycaffe because files
  in some directories may conflict with libraries in implicit directories:

    runtime library [libcudnn.so.7] in /usr/lib/aarch64-linux-gnu may be hidden by files in:
      /usr/local/cuda-9.0/lib64

  Some of these libraries may not be found correctly.


-- Generating done
-- Build files have been written to: /home/nvidia/caffe/build

I haven’t run into this, but it sounds like you have other libraries of the same name which might be found in the default search path. You could experiment and see what happens if you run with the environment variable “LD_PRELOAD” to the real library.

If you want this shell and all children of this shell to inherit this set of libraries, then export. Example:

export LD_PRELOAD="/where/ever/correct/file/is/file1.so /where/ever/correct/file/is/file2.so"
# ...whatever commands here...e.g., compile or run...

If you just want it to be for this one command, here is an example:

LD_PRELOAD="/where/ever/correct/file/is/file1.so /where/ever/correct/file/is/file2.so" /the/command

Note that if you want see the libraries the default linking sees:

ldconfig -p

LD_PRELOAD can add to that list temporarily, or load a replacement and prevent something in that list from loading.