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

Unable to compile rviz on ubuntu armhf

asked 2013-01-13 01:17:28 -0600

gpr gravatar image

updated 2014-04-20 14:09:26 -0600

ngrennan gravatar image

I am building ROS Groovy Desktop on a Pandaboard running Ubuntu 12.04 Precise using armhf. As ROS is not currently released for armhf I have had to compile Groovy from source. I am attempting to compile RVIZ and it crashes part-way through with errors related to "undefined reference to 'vtable for Assimp::IOSystem' "

  • Does anyone know how I can get past this error and get RVIZ to compile properly?

See below for the full output from running Make within the RVIZ directory:

[ 61%] Built target rviz Linking CXX executable /home/user/ros_catkin_ws/devel_isolated/rviz/lib/rviz/rviz [ 92%] Built target default_plugin [ 92%] Generating moc_image_view.cxx Scanning dependencies of target rviz_image_view [ 92%] Building CXX object src/image_view/CMakeFiles/rviz_image_view.dir/image_view.cpp.o /home/user/ros_catkin_ws/devel_isolated/rviz/lib/librviz.so: undefined reference to vtable for Assimp::IOSystem' /home/user/ros_catkin_ws/devel_isolated/rviz/lib/librviz.so: undefined reference totypeinfo for Assimp::IOSystem' collect2: ld returned 1 exit status make[2]: * [/home/user/ros_catkin_ws/devel_isolated/rviz/lib/rviz/rviz] Error 1 make[1]: [src/rviz/CMakeFiles/executable.dir/all] Error 2 make[1]: Waiting for unfinished jobs.... [ 92%] Building CXX object src/image_view/CMakeFiles/rviz_image_view.dir/main.cpp.o In file included from /usr/include/qt4/QtCore/qobject.h:48:0, from /usr/include/qt4/QtCore/qcoreapplication.h:45, from /usr/include/qt4/QtGui/qapplication.h:45, from /usr/include/qt4/QtGui/QApplication:1, from /home/user/ros_catkin_ws/src/rviz/src/image_view/main.cpp:34: /usr/include/qt4/QtCore/qstring.h:174:17: note: the mangling of ‘va_list’ has changed in GCC 4.4 [ 93%] Building CXX object src/image_view/CMakeFiles/rviz_image_view.dir/moc_image_view.cxx.o In file included from /usr/include/qt4/QtCore/qobject.h:48:0, from /usr/include/qt4/QtCore/qtimer.h:48, from /usr/include/qt4/QtCore/QTimer:1, from /home/user/ros_catkin_ws/src/rviz/src/image_view/image_view.cpp:32: /usr/include/qt4/QtCore/qstring.h:174:17: note: the mangling of ‘va_list’ has changed in GCC 4.4 In file included from /usr/include/qt4/QtCore/qobject.h:48:0, from /usr/include/qt4/QtGui/qwidget.h:46, from /usr/include/qt4/QtGui/QWidget:1, from /home/user/ros_catkin_ws/src/rviz/src/rviz/ogre_helpers/render_widget.h:32, from /home/user/ros_catkin_ws/src/rviz/src/rviz/ogre_helpers/qt_ogre_render_window.h:6, from /home/user/ros_catkin_ws/build_isolated/rviz/src/image_view/../../../../src/rviz/src/image_view/image_view.h:31, from /home/user/ros_catkin_ws/build_isolated/rviz/src/image_view/moc_image_view.cxx:10: /usr/include/qt4/QtCore/qstring.h:174:17: note: the mangling of ‘va_list’ has changed in GCC 4.4 Linking CXX executable /home/user/ros_catkin_ws/devel_isolated/rviz/lib/rviz/image_view /home/user/ros_catkin_ws/devel_isolated/rviz/lib/librviz.so: undefined reference to vtable for Assimp::IOSystem' /home/user/ros_catkin_ws/devel_isolated/rviz/lib/librviz.so: undefined reference totypeinfo for Assimp::IOSystem' collect2: ld returned 1 exit status make[2]: [/home/user/ros_catkin_ws/devel_isolated/rviz/lib/rviz/image_view] Error 1 make[1]: [src/image_view/CMakeFiles/rviz_image_view.dir/all] Error 2 make: * [all] Error 2

edit retag flag offensive close merge delete

6 Answers

Sort by » oldest newest most voted
10

answered 2014-02-06 05:24:35 -0600

evk02 gravatar image

updated 2014-02-06 05:27:24 -0600

I had the same issue and I solved it by patching mesh_loader.cpp by adding the next lines after the assimp include lines:

#  ifdef __arm__                 // fix for ARM build
#include <strings.h>
bool Assimp::IOSystem::ComparePaths(const char *p1, const char *p2) const
{
    return !::strcasecmp(p1, p2);
}
#  endif

This is basically the same patch as here applied for the collada_urdf package: h++ps://groups.google.com/forum/#!msg/ros-sig-embedded/26XlDtZhyNs/OexZAx6BCBcJ</strings.h>

edit flag offensive delete link more

Comments

1

Did the trick to Odroid running Ubuntu Linaro 12.11 and ROS Hydro ;)

TSC gravatar image TSC  ( 2014-06-30 20:23:58 -0600 )edit

Give this man a cookie.

Tanmay gravatar image Tanmay  ( 2015-06-19 16:48:13 -0600 )edit

Spot on. As small of a change this is without it a build of rviz is a no go. :D

rbaleksandar gravatar image rbaleksandar  ( 2015-08-23 12:28:45 -0600 )edit

Following is the path to the file "/home/pi/ros_catkin_ws/src/rviz/src/rviz/mesh_loader.cpp" if you are following the setups on wiki.ros.org

HassanNadeem gravatar image HassanNadeem  ( 2016-02-05 01:19:48 -0600 )edit
2

answered 2013-01-16 11:22:46 -0600

Raptor gravatar image

RVIZ is pointless to have on the pandaboard. It is not powerful enough to run it and does not have the required video drivers to make it work. Just remove the package and anything that depends on the rviz package.

edit flag offensive delete link more

Comments

1

Interestingly if you compile it, this means you can compile packages that depend on rviz, and then disable / not actually use rviz when you are running them.

Tanmay gravatar image Tanmay  ( 2015-06-19 16:49:21 -0600 )edit

I wanted the Rqt stuff and the Rviz was just a dependency (along with VLC player?!?!). So if you want to use and develop something like the Rqt dashboard this is definitely a must. As for using Rviz on such a platform - yeap, it's like shooting yourself in the kneecap.

rbaleksandar gravatar image rbaleksandar  ( 2015-08-22 17:17:50 -0600 )edit
1

answered 2014-09-08 02:12:22 -0600

ahendrix gravatar image

The Indigo builds for Trusty armhf include a patched version of ASSIMP that no longer requires patches to all of the packages that depend on it.

edit flag offensive delete link more
0

answered 2016-05-07 15:20:18 -0600

jianny gravatar image

I encounter same problem, and solved by add # ifdef __arm__ // fix for ARM build #include <strings.h> bool Assimp::IOSystem::ComparePaths(const char *p1, const char *p2) const { return !::strcasecmp(p1, p2); } # endif in to src/rviz/mesh_loader.cpp

edit flag offensive delete link more
0

answered 2013-01-29 01:50:37 -0600

zumili gravatar image

Based on an installation tutorial for ROS Groovy on Raspbian Pi:

h++p://www.ros.org/wiki/groovy/Installation/Raspbian/Source

I created a tutorial for ROS Groovy running under Ubuntu 12.04 on a PandaBoard (armhf):

h++p://www.ros.org/wiki/groovy/Installation/PandaBoard/Source

It's recommended to use the robot installation, this will have all neccessary messages but no grafic tools.

Hope this will help somebody.

edit flag offensive delete link more
0

answered 2016-04-04 03:01:13 -0600

the problem keeps unsolved after patching on jessie(Raspberry Pi 2)

edit flag offensive delete link more

Comments

seems error with the "ifdef _arm_" . deleting it and "endif" makes the error retreats

wayenros gravatar image wayenros  ( 2016-04-04 04:18:29 -0600 )edit

Question Tools

1 follower

Stats

Asked: 2013-01-13 01:17:28 -0600

Seen: 7,537 times

Last updated: May 07 '16