ROSBUG:libopencv_imgcodecs3.so.3.3.1: undefined reference to `TIFFReadDirectory@LIBTIFF_4.0`

1919 ワード

ROSのインストールが完了するとopencvがインストールされますが、自分でもopencvがインストールされているので、この2つのopencvが競合している可能性があります.ROSのデフォルト呼び出しは、独自のopencvです.解決策:libopencvを検索するimgcodecs3.so.3.3.1依存ライブラリ:
ldd /opt/ros/kinetic/lib/x86_64-linux-gnu/libopencv_imgcodecs3.so.3.3.1

出力:
linux-vdso.so.1 =>  (0x00007ffd3bb9b000)
libopencv_imgproc3.so.3.3 => /opt/ros/kinetic/lib/x86_64-linux-gnu/libopencv_imgproc3.so.3.3 (0x00007f81bcc53000)
libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f81bca36000)
libjpeg.so.8 => /usr/lib/x86_64-linux-gnu/libjpeg.so.8 (0x00007f81bc7dd000)
libwebp.so.5 => /usr/lib/x86_64-linux-gnu/libwebp.so.5 (0x00007f81bc581000)
libpng12.so.0 => /lib/x86_64-linux-gnu/libpng12.so.0 (0x00007f81bc35c000)
libtiff.so.5 => /usr/lib/x86_64-linux-gnu/libtiff.so.5 (0x00007f81bc0e7000)  //   
libjasper.so.1 => /usr/lib/x86_64-linux-gnu/libjasper.so.1 (0x00007f81bbe92000)
libopencv_core3.so.3.3 => /opt/ros/kinetic/lib/x86_64-linux-gnu/libopencv_core3.so.3.3 (0x00007f81baf58000)
libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007f81bad3e000)
libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007f81ba9bc000)
libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f81ba6b3000)
libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007f81ba49d000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f81ba0d3000)
/lib64/ld-linux-x86-64.so.2 (0x00007f81bfb78000)
liblzma.so.5 => /lib/x86_64-linux-gnu/liblzma.so.5 (0x00007f81b9eb1000)
libjbig.so.0 => /usr/lib/x86_64-linux-gnu/libjbig.so.0 (0x00007f81b9ca3000)
libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f81b9a9f000)
librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007f81b9897000)

そしてCMakelistでtxtでtiffのパスを手動で指定
  target_link_libraries(${PROJECT_NAME}_lib
  	...
    /usr/lib/x86_64-linux-gnu/libtiff.so.5  
  )