Problems cross compiling Robot variant of ROS for aarch64 architecture

Hi all,

Apologies if this is not the right place where to raise this topic or if it is a duplicate (I have done a search first), but I am stuck with a problem cross-compiling ROS and I was hoping to have some help here.

I am cross compiling ROS for aarch64 architecture so I can use it with few of my boards (including a Jetson Nano that I bought few weeks back).

I followed the DRIVE PX2 ROS CROSS COMPILATION (https://devtalk.nvidia.com/default/topic/1032206/faq/drive-px2-ros-cross-compilation/post/5251406/) guide step by step and everything worked fine, having the ros_comm variant working fine on my Jetson Nano as well as other aarch64 boards that I have (the very same build works on several boards).

Now, I am trying to build the Robot variant (which includes more packets and libraries) and I am able to build 111 out of 115 packets. However, it fails on the linking stage of the kdl_parser package. I have tweaked with the toolchain file but after several tries, I haven’t been able to make it work.

The output that I got is something like:

[100%] Linking CXX executable /home/javieralso/devel/boards/Jetson/ros_crosscompile/ros_catkin_barebones_ws/devel_isolated/kdl_parser/lib/kdl_parser/check_kdl_parser
/usr/lib/gcc-cross/aarch64-linux-gnu/8/…/…/…/…/aarch64-linux-gnu/bin/ld: warning: libclass_loader.so, needed by /home/javieralso/devel/boards/Jetson/ros_crosscompile/ros_catkin_barebones_ws/install_isolated/lib/liburdf.so, not found (try using -rpath or -rpath-link)


/usr/lib/gcc-cross/aarch64-linux-gnu/8/…/…/…/…/aarch64-linux-gnu/bin/ld: /home/javieralso/devel/boards/Jetson/ros_crosscompile/ros_catkin_barebones_ws/install_isolated/lib/liburdf.so: undefined reference to `class_loader::MultiLibraryClassLoader::loadLibrary(std::__cxx11::basic_string<char, std::char_traits, std::allocator > const&)’


The linker is complaining that:

  • It can find some libraries which are there
  • Some symbols do not exist on the libraries, however I double checked with nm and the symbols are there.

Has anyone experienced something similar to this problem or might have a clue of where to look at? I suspect this might be a problem with the linking configuration, but unfortunately I am not very experienced with CMake.

Thank you very much in advance.

Best regards,
Javier

Hi javieralso,

Here are the topic and githup as your reference:
https://devtalk.nvidia.com/default/topic/1048856/jetson-nano/installing-ros-on-nano/
https://www.jetsonhacks.com/2017/03/27/robot-operating-system-ros-nvidia-jetson-tx2/
https://github.com/jetsonhacks/installROSTX2

and ROS project sharing:
https://devtalk.nvidia.com/default/topic/1068435/jetson-projects/hoverboard-based-mobile-robot-with-jetson-nano/
https://devtalk.nvidia.com/default/topic/1067651/jetson-nano/check-out-our-tutorial-for-using-the-jetson-nano-to-build-a-small-robot-running-ros-/