Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Compiling PCL 1.7 on Ubuntu 16.04 , errors in CMake generated Makefile

I'm trying to get PCL 1.7 (The point cloud library, not the other pcl) working on Ubuntu 16.04. I eventually hope to use for C++ stuff, but right now I'm just trying to get the examples working. I'm using the default compilers that came with Ubuntu (GNU 5.3.1), and Cmake version 3.5.2. I've been following the directions on PCL's website (here and here), but am currently stuck at the point where I use the 'make' command after letting Cmake build the things it wants to build. This is the error I get

[ 50%] Building CXX object CMakeFiles/pcd_write.dir/pcd_write.cpp.o
<command-line>:0:15: warning: missing whitespace after the macro name
make[2]: *** No rule to make target '/usr/lib/x86_64-linux-gnu/libproj.so', needed by 'pcd_write'.  Stop.
CMakeFiles/Makefile2:67: recipe for target 'CMakeFiles/pcd_write.dir/all' failed
make[1]: *** [CMakeFiles/pcd_write.dir/all] Error 2
Makefile:83: recipe for target 'all' failed
make: *** [all] Error 2

Cmake also gives me warnings when I'm building things, and those are here. They don't stop it from running, but they might be relevant.

-- Found OpenNI2: /usr/lib/libOpenNI2.so  
** WARNING ** io features related to pcap will be disabled
** WARNING ** io features related to png will be disabled
-- The imported target "vtkRenderingPythonTkWidgets" references the file
   "/usr/lib/x86_64-linux-gnu/libvtkRenderingPythonTkWidgets.so"
but this file does not exist.  Possible reasons include:
* The file was deleted, renamed, or moved to another location.
* An install or uninstall procedure did not complete successfully.
* The installation package was faulty and contained
   " /usr/lib/cmake/vtk-6.2/VTKTargets.cmake"
    but not all the files it references.

Also, in case it's relevant, I did a potentially stupid thing earlier when it was giving me similar warnings about VTK. It was telling me that /user/bin/vtk was renamed or something, and it was. This version of VTK called itself vtk6. I tried to root around in the makefiles to find that and change it so Cmake would know to look for vtk6, but I couldn't find it anywhere, so I went into the bin and made a copy of vtk6 named vtk, and it stopped giving me a warning.

Other relevant versions of stuff I'm using are eigen3 3.2.92, boost 1.58.0, flan 1.8.4, vtk6, and libopenni2 version 2.2.0.3

Again, not sure how much of this is actually important, but better to be too specific than too vague IMO.

like image 843
Brandon Powers Avatar asked May 22 '16 00:05

Brandon Powers


3 Answers

This bug is still in 16.04, but there is a workaround.

  1. sudo apt install libproj-dev

  2. add the following line to your CMakeLists.txt file:
    list(REMOVE_ITEM PCL_LIBRARIES "vtkproj4")

The first provides the necessary libproj.so, and the second fixes errors when linking against a nonexistent (and unnecessary) libvtkproj4.

The other errors about referenced files not existing appear to be harmless (or at least my project compiles despite having the same errors).

for more information, see:
https://bugs.launchpad.net/ubuntu/+source/pcl/+bug/1573174
https://bugs.launchpad.net/ubuntu/+source/vtk6/+bug/1573234

like image 177
mesilliac Avatar answered Nov 10 '22 03:11

mesilliac


This solved the issue for me:

sudo apt-get install libproj-dev

Source: https://github.com/PointCloudLibrary/pcl/issues/1828

like image 3
LandonZeKepitelOfGreytBritn Avatar answered Nov 10 '22 02:11

LandonZeKepitelOfGreytBritn


There seems to be an issue with the installation with vtk6

described here : https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=819741

quick and dirty fix: make a symbolic link libproj.so in the requested directory:

sudo ln -s  /usr/lib/x86_64-linux-gnu/libproj.so.<your-version> /usr/lib/x86_64-linux-gnu/libproj.so
like image 2
Patricio Astudillo Avatar answered Nov 10 '22 03:11

Patricio Astudillo