I'm trying to use ICC to compile a package I've made for ROS (www.ros.org). My package depends on a package in the standard ROS library, called PCL, which has already been compiled, I believe using gcc. When I compile my code using gcc, it works fine. However, when I try to compile with icc, I get the following two errors:
/opt/ros/diamondback/stacks/perception_pcl/pcl/include/pcl/point_cloud.h(195): error: argument list for class template "pcl::PointCloud" is missing friend boost::shared_ptr& detail::getMapping(PointCloud& p);
/opt/ros/diamondback/stacks/perception_pcl/pcl/include/pcl/point_cloud.h(195): error: declaration is incompatible with function template "boost::shared_ptr<:MSGFIELDMAP> &pcl::detail::getMapping(pcl::PointCloud &)" (declared at line 204) friend boost::shared_ptr& detail::getMapping(PointCloud& p); ^ detected during instantiation of class "pcl::PointCloud [with PointT=rgbd::pt]" at line 64 of "/home/rheld/Documents/Code/kinect/rgbd/branches/pcl/rgbd-ros-pkg/kinect_tracker/include/Model.h"
I believe these are the lines of code in question from Model.h:
icpc 12 no longer has a libguide. If you include -parallel in the options at link time, the current OpenMP library and -lpthread, as well as any other libraries needed from the compiler installation, would be added automatically by icpc in its invocation of the pre-link steps. I don't remember whether libcxaguard is still available, but it's preferable to simply use normal options rather than specifying a list of libraries associated with some past version of icpc and bypass the C compiler in its normal role for driving a link. The -E -P options are pretty much similar to those use by g++ for pre-processing only, and you would specify the file name same as you would with g++. You're asking a lot to expect people to second guess you here, when you don't even show error messages.