Pcl: Link error: cannot find vtkproj4

Created on 21 Apr 2016  路  5Comments  路  Source: PointCloudLibrary/pcl

Greetings,

We are trying to get the pcl/ros packages building in Xenial for the upcoming ROS Kinetic release.

We discovered some link errors building the existing code in Xenial using the libpcl1.7 binary: ros-perception/perception_pcl#119

/usr/bin/ld: cannot find -lvtkproj4

I reproduced the errors with a minimal CMake-only example (no dependencies besides pcl 1.7).

Source: https://gist.github.com/jacquelinekay/de36ff4a398793913e7e96064c893e1b
CMakeLists.txt: https://gist.github.com/jacquelinekay/3158868ccdb044920b31acfdb065b6b6

It appears that when PCLConfig.cmake is generated, the find_vtk function sets VTK_LIBRARIES to a hardcoded list of libraries that includes lvtkproj4, which doesn't exist:
https://github.com/PointCloudLibrary/pcl/blob/master/PCLConfig.cmake.in#L468-Lundefined

(As a side note, there is also a problem where vtk6 cannot locate libproj.so. I needed to manually install libproj-dev to pull in the dynamic library name that vtk was expecting. I will ticket this separately for VTK.)

Most helpful comment

For those trying to get PDAL to work, this is dirty hackery, but it should allow things to link without being too disruptive (no touching cmake configs)

ln -s /usr/lib/x86_64-linux-gnu/libvtkCommonCore-6.2.so /usr/lib/libvtkproj4.so

All 5 comments

HI Jackie,

that's a bug in vtk6: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=819741. You can ask the Ubuntu maintainers to import the new version from Debian unstable.

Cheers Jochen

Hi,
as mention above by @hobu I encountered this /usr/bin/ld: cannot find -lvtkproj4 error several times while compiling PDAL with PCL support.

I installed PCL libraries from the official Xenial repositories.

The "macro(find_vtk)" in the file _/usr/lib/x86_64-linux-gnu/cmake/pcl/PCLConfig.cmake_ is slightly different from the one mentioned by @jacquelinekay.
Here is this macro part in mine : http://pastebin.com/raw/r5JV02tL (I have separated the lib names by new lines for more readability).

I'm using Ubuntu 16.04 kernel 4.4.0-28-generic.

Is there something I can do to fix this ?
Thanks.

For those trying to get PDAL to work, this is dirty hackery, but it should allow things to link without being too disruptive (no touching cmake configs)

ln -s /usr/lib/x86_64-linux-gnu/libvtkCommonCore-6.2.so /usr/lib/libvtkproj4.so

To fix the following error when execute cmake in Ubuntu 16.04:

-- The imported target "vtkRenderingPythonTkWidgets" references the file
   "/usr/lib/x86_64-linux-gnu/libvtkRenderingPythonTkWidgets.so"
but this file does not exist.  Possible reasons include:

Install python-vtk6 and create a link:

ln -s /usr/lib/python2.7/dist-packages/vtk/libvtkRenderingPythonTkWidgets.x86_64-linux-gnu.so /usr/lib/x86_64-linux-gnu/libvtkRenderingPythonTkWidgets.so

If you're working with ROS the symlink that worked for me is below! thanks to @fernandojunior for the initial pointer.

ln -s /usr/lib/x86_64-linux-gnu/libvtkCommonCore-6.2.so /usr/lib/x86_64-linux-gnu/libvtkproj4-6.2.so.6.2.0
Was this page helpful?
0 / 5 - 0 ratings