ROS Resources: Documentation | Support | Discussion Forum | Index | Service Status | ros @ Robotics Stack Exchange
Ask Your Question

Building ROS Hydro on Debian (PCL build problems and question)

asked 2014-02-09 00:53:26 -0600

AStudent gravatar image

updated 2016-10-24 08:35:51 -0600

ngrennan gravatar image

I am in the process of building Hydro for Debian Weezy according to .

I have a build problem (1) and a question (2):

1) At step 4.3 "sudo checkinstall make install" gives error:

[ 21%] Building CXX object keypoints/CMakeFiles/pcl_keypoints.dir/src/iss_3d.cpp.o c++: error trying to exec 'cc1plus': execvp: No such file or directory

There is g++-4.7 installed on my system and g++ compiles c++ code if invoked directly from command line, although cc1plus is not in the $PATH. Should I somehow manually add it there? I am not sure how to do that.

2) At the end of 4.3 it says "When running check-install rename the package as follows and provide lines to libpcl-all-dev to match the rosdep dependency." What does that "as follows" mean - PCL is not mentioned anywhere afterwards - and how one has to "provide lines" "to match rosdep dependency"? More clear explanation would be very much appreciated for those who are not familiar with building .deb packages and ROS, but still want to build ROS in Debian.

edit retag flag offensive close merge delete

1 Answer

Sort by ยป oldest newest most voted

answered 2014-02-11 15:50:34 -0600

St3am gravatar image

It looks like there may not be a problem with having cc1plus in your path, it would probably be in some /usr/bin or /bin directory anyway, I would guess that its because execvp is not installed on your system. Try getting it from synaptic. You may need to ask someone more experienced if you still run into a problem.

The package renaming needs to happen because of the list that rosdep checks a list compiled by other debian ROS users to make sure you have all of your dependencies at build time. You can see it here: Essentially check-install just makes a .deb package out of normal cmake directions. It takes care of making sure the package can't be used without the linked libraries used to build it and placing it's components in the right place. I think it gets the names for the package in the cmake file, but the rosdep dependencies were named something else in several cases, so even though you build it, rosdep won't find it unless you change the name when you run the checkinstall command.

I put a lot of that material up there, and am still in the process of learning myself so you might just have to play around by looking at other tutorials for building PCL. My general strategy when compiling was to first try to build ros, then at a dependency failure 1. see if i could find it in the wheezy repos, 2. see if I could find it in a testing repo to backport it (directions for that on the debian experimental page), 3. compile from source. If I got unlucky and ended up at 3 and the compile failed, I would check to make sure every package in the error was installed, then check for required versions listed by the package maintainers, and lastly look at bug reports.

I want to bring a ROS binary package to debian but I'm afraid that even if I do ROS will be moving so fast that I won't be able to help maintain it. If you or anyone else reading would be up for starting a maintainer group, I'd be down to try and make it happen.

edit flag offensive delete link more


FYI, execvp is a system call. It's present on all POSIX-compliant systems.

ahendrix gravatar image ahendrix  ( 2014-02-11 15:56:15 -0600 )edit

Question Tools


Asked: 2014-02-09 00:53:26 -0600

Seen: 433 times

Last updated: Feb 11 '14