Mavros: gcs_image_bridge.cpp 编译错误

创建于 2015-01-29  ·  12评论  ·  资料来源: mavlink/mavros

伙计们,

事情进展如何? 我终于回到项目中工作了 :D 在我的笔记本电脑上做一些清理工作。 使用 Indigo 安装 14.04。
但是在我的工作区中,在执行catkin_make ,我在gcs_image_bridge.cpp编译中得到了这个:

[ 98%] Built target mavros_plugins
CMakeFiles/gcs_image_bridge.dir/src/gcs_image_bridge.cpp.o: In function `image_cb(boost::shared_ptr<sensor_msgs::Image_<std::allocator<void> > const> const&)':
gcs_image_bridge.cpp:(.text+0x1077): undefined reference to `cv::imencode(cv::String const&, cv::_InputArray const&, std::vector<unsigned char, std::allocator<unsigned char> >&, std::vector<int, std::allocator<int> > const&)'
CMakeFiles/gcs_image_bridge.dir/src/gcs_image_bridge.cpp.o: In function `cv::String::String(char const*)':
gcs_image_bridge.cpp:(.text._ZN2cv6StringC2EPKc[_ZN2cv6StringC5EPKc]+0x4f): undefined reference to `cv::String::allocate(unsigned long)'
CMakeFiles/gcs_image_bridge.dir/src/gcs_image_bridge.cpp.o: In function `cv::String::~String()':
gcs_image_bridge.cpp:(.text._ZN2cv6StringD2Ev[_ZN2cv6StringD5Ev]+0x14): undefined reference to `cv::String::deallocate()'
CMakeFiles/gcs_image_bridge.dir/src/gcs_image_bridge.cpp.o: In function `cv::String::operator=(cv::String const&)':
gcs_image_bridge.cpp:(.text._ZN2cv6StringaSERKS0_[_ZN2cv6StringaSERKS0_]+0x28): undefined reference to `cv::String::deallocate()'
collect2: error: ld returned 1 exit status
make[2]: *** [/home/nuno/AIMAV_Project/devel/lib/mavros_extras/gcs_image_bridge] Error 1
make[1]: *** [mavros/mavros_extras/CMakeFiles/gcs_image_bridge.dir/all] Error 2
make: *** [all] Error 2
Invoking "make -j8 -l8" failed

也许与opencv有关? 我安装了 indigo repo 附带的版本。
有什么建议吗?

希望继续对项目进行一些改进:)

最好的事物,
努诺

build error question

最有用的评论

删除您的构建和开发目录。

所有12条评论

顺便提一句,
终端上的pkg-config --libs opencv给了我:

/opt/ros/indigo/lib/libopencv_calib3d.so /opt/ros/indigo/lib/libopencv_core.so 
/opt/ros/indigo/lib/libopencv_features2d.so /opt/ros/indigo/lib/libopencv_flann.so 
/opt/ros/indigo/lib/libopencv_highgui.so /opt/ros/indigo/lib/libopencv_imgcodecs.so 
/opt/ros/indigo/lib/libopencv_imgproc.so /opt/ros/indigo/lib/libopencv_ml.so 
/opt/ros/indigo/lib/libopencv_objdetect.so /opt/ros/indigo/lib/libopencv_photo.so 
/opt/ros/indigo/lib/libopencv_shape.so /opt/ros/indigo/lib/libopencv_stitching.so 
/opt/ros/indigo/lib/libopencv_superres.so /opt/ros/indigo/lib/libopencv_ts.a 
/opt/ros/indigo/lib/libopencv_video.so /opt/ros/indigo/lib/libopencv_videoio.so 
/opt/ros/indigo/lib/libopencv_videostab.so /opt/ros/indigo/lib/libopencv_viz.so

更新:
卸载opencv版本的Indigo,从源码安装opencv: http :
结果一样! 那么有什么问题呢?

删除您的构建和开发目录。

已经做了。 一样的东西

你为什么用ros版本? 据我所知,它需要系统库。

我的库:

$ ls /usr/lib/x86_64-linux-gnu/libopencv_*
/usr/lib/x86_64-linux-gnu/libopencv_calib3d.a
/usr/lib/x86_64-linux-gnu/libopencv_calib3d.so@
/usr/lib/x86_64-linux-gnu/libopencv_calib3d.so.2.4@
/usr/lib/x86_64-linux-gnu/libopencv_calib3d.so.2.4.8@
/usr/lib/x86_64-linux-gnu/libopencv_calib3d.so.2.4.9
/usr/lib/x86_64-linux-gnu/libopencv_contrib.a
/usr/lib/x86_64-linux-gnu/libopencv_contrib.so@
/usr/lib/x86_64-linux-gnu/libopencv_contrib.so.2.4@
/usr/lib/x86_64-linux-gnu/libopencv_contrib.so.2.4.8@
/usr/lib/x86_64-linux-gnu/libopencv_contrib.so.2.4.9
/usr/lib/x86_64-linux-gnu/libopencv_core.a
/usr/lib/x86_64-linux-gnu/libopencv_core.so@
/usr/lib/x86_64-linux-gnu/libopencv_core.so.2.4@
/usr/lib/x86_64-linux-gnu/libopencv_core.so.2.4.8@
/usr/lib/x86_64-linux-gnu/libopencv_core.so.2.4.9
/usr/lib/x86_64-linux-gnu/libopencv_features2d.a
/usr/lib/x86_64-linux-gnu/libopencv_features2d.so@
/usr/lib/x86_64-linux-gnu/libopencv_features2d.so.2.4@
/usr/lib/x86_64-linux-gnu/libopencv_features2d.so.2.4.8@
/usr/lib/x86_64-linux-gnu/libopencv_features2d.so.2.4.9
/usr/lib/x86_64-linux-gnu/libopencv_flann.a
/usr/lib/x86_64-linux-gnu/libopencv_flann.so@
/usr/lib/x86_64-linux-gnu/libopencv_flann.so.2.4@
/usr/lib/x86_64-linux-gnu/libopencv_flann.so.2.4.8@
/usr/lib/x86_64-linux-gnu/libopencv_flann.so.2.4.9
/usr/lib/x86_64-linux-gnu/libopencv_gpu.a
/usr/lib/x86_64-linux-gnu/libopencv_gpu.so@
/usr/lib/x86_64-linux-gnu/libopencv_gpu.so.2.4@
/usr/lib/x86_64-linux-gnu/libopencv_gpu.so.2.4.8@
/usr/lib/x86_64-linux-gnu/libopencv_gpu.so.2.4.9
/usr/lib/x86_64-linux-gnu/libopencv_highgui.a
/usr/lib/x86_64-linux-gnu/libopencv_highgui.so@
/usr/lib/x86_64-linux-gnu/libopencv_highgui.so.2.4@
/usr/lib/x86_64-linux-gnu/libopencv_highgui.so.2.4.8@
/usr/lib/x86_64-linux-gnu/libopencv_highgui.so.2.4.9
/usr/lib/x86_64-linux-gnu/libopencv_imgproc.a
/usr/lib/x86_64-linux-gnu/libopencv_imgproc.so@
/usr/lib/x86_64-linux-gnu/libopencv_imgproc.so.2.4@
/usr/lib/x86_64-linux-gnu/libopencv_imgproc.so.2.4.8@
/usr/lib/x86_64-linux-gnu/libopencv_imgproc.so.2.4.9
/usr/lib/x86_64-linux-gnu/libopencv_legacy.a
/usr/lib/x86_64-linux-gnu/libopencv_legacy.so@
/usr/lib/x86_64-linux-gnu/libopencv_legacy.so.2.4@
/usr/lib/x86_64-linux-gnu/libopencv_legacy.so.2.4.8@
/usr/lib/x86_64-linux-gnu/libopencv_legacy.so.2.4.9
/usr/lib/x86_64-linux-gnu/libopencv_ml.a
/usr/lib/x86_64-linux-gnu/libopencv_ml.so@
/usr/lib/x86_64-linux-gnu/libopencv_ml.so.2.4@
/usr/lib/x86_64-linux-gnu/libopencv_ml.so.2.4.8@
/usr/lib/x86_64-linux-gnu/libopencv_ml.so.2.4.9
/usr/lib/x86_64-linux-gnu/libopencv_objdetect.a
/usr/lib/x86_64-linux-gnu/libopencv_objdetect.so@
/usr/lib/x86_64-linux-gnu/libopencv_objdetect.so.2.4@
/usr/lib/x86_64-linux-gnu/libopencv_objdetect.so.2.4.8@
/usr/lib/x86_64-linux-gnu/libopencv_objdetect.so.2.4.9
/usr/lib/x86_64-linux-gnu/libopencv_ocl.a
/usr/lib/x86_64-linux-gnu/libopencv_ocl.so@
/usr/lib/x86_64-linux-gnu/libopencv_ocl.so.2.4@
/usr/lib/x86_64-linux-gnu/libopencv_ocl.so.2.4.8@
/usr/lib/x86_64-linux-gnu/libopencv_ocl.so.2.4.9
/usr/lib/x86_64-linux-gnu/libopencv_photo.a
/usr/lib/x86_64-linux-gnu/libopencv_photo.so@
/usr/lib/x86_64-linux-gnu/libopencv_photo.so.2.4@
/usr/lib/x86_64-linux-gnu/libopencv_photo.so.2.4.8@
/usr/lib/x86_64-linux-gnu/libopencv_photo.so.2.4.9
/usr/lib/x86_64-linux-gnu/libopencv_stitching.a
/usr/lib/x86_64-linux-gnu/libopencv_stitching.so@
/usr/lib/x86_64-linux-gnu/libopencv_stitching.so.2.4@
/usr/lib/x86_64-linux-gnu/libopencv_stitching.so.2.4.8@
/usr/lib/x86_64-linux-gnu/libopencv_stitching.so.2.4.9
/usr/lib/x86_64-linux-gnu/libopencv_superres.a
/usr/lib/x86_64-linux-gnu/libopencv_superres.so@
/usr/lib/x86_64-linux-gnu/libopencv_superres.so.2.4@
/usr/lib/x86_64-linux-gnu/libopencv_superres.so.2.4.8@
/usr/lib/x86_64-linux-gnu/libopencv_superres.so.2.4.9
/usr/lib/x86_64-linux-gnu/libopencv_ts.a
/usr/lib/x86_64-linux-gnu/libopencv_ts.so@
/usr/lib/x86_64-linux-gnu/libopencv_ts.so.2.4@
/usr/lib/x86_64-linux-gnu/libopencv_ts.so.2.4.9
/usr/lib/x86_64-linux-gnu/libopencv_video.a
/usr/lib/x86_64-linux-gnu/libopencv_video.so@
/usr/lib/x86_64-linux-gnu/libopencv_video.so.2.4@
/usr/lib/x86_64-linux-gnu/libopencv_video.so.2.4.8@
/usr/lib/x86_64-linux-gnu/libopencv_video.so.2.4.9
/usr/lib/x86_64-linux-gnu/libopencv_videostab.a
/usr/lib/x86_64-linux-gnu/libopencv_videostab.so@
/usr/lib/x86_64-linux-gnu/libopencv_videostab.so.2.4@
/usr/lib/x86_64-linux-gnu/libopencv_videostab.so.2.4.8@
/usr/lib/x86_64-linux-gnu/libopencv_videostab.so.2.4.9

其中 2.4.8 链接是在 14.10 + Indigo 上构建 mavros 的修复程序。

解决了! 我有 2.4.8 而不是 2.4.9,安装 2.4.9 解决了。 现在关闭!

嗯,2.4.8 是 14.04 中的一个版本,我做了那个链接来解决构建依赖。

@TSC21我在 Ubuntu 14.04 上遇到了同样的问题,你是如何安装 2.4.9 的 Ubuntu 14.04 只有 2.4.9 !

@blackcoder请进行源代码安装

问题不在opencv版本中! 我使用 2.4.9,因为它在 Ubuntu 14.10 中发布。
它在 jenkins 上构建得很好( indigo trusty

不可以混合 ros opencv 包(放置在/opt/ros )和系统。
因为ros包提供了实验性的opencv3。

@vooon你是对的! 我只是删除了 ros-indigo-opencv3 并正确编译。
为了将来参考,面临同样问题的人也应该这样做:

sudo apt-get remove ros-indigo-opencv3

删除您的构建和开发目录。

非常感谢!
我在之后解决了这个问题:

  1. $ sudo apt-get install ros-indigo-opencv3
  2. 删除 /ros_ws/devel 和 /ros_ws/build
  3. $ catkin_make
此页面是否有帮助?
0 / 5 - 0 等级

相关问题

mohand150 picture mohand150  ·  5评论

RR2-IP2 picture RR2-IP2  ·  4评论

shening picture shening  ·  10评论

SubMishMar picture SubMishMar  ·  5评论

zhahaoyu picture zhahaoyu  ·  12评论