Robotics StackExchange | Archived questions

cross-compile ROS for ARM64

I've compiled and installed ROS1 from source on X86 machine (Ubuntu).

Now I want to cross-compile ROS1 on X86 for ARM64.

Here is what I've done:

1) install all of dependencies of ROS1 on ARM64;
2) cp /lib/aarch64-linux-gnu, /usr/lib/aarch64-linux-gnu and etc/ld.so.conf.d of ARM64 to the relative places of X86;
3) execute ldconfig on X86;
4) apt install gcc-arm-linux-gnueabihf g++-arm-linux-gnueabihf on X86;
5) execute the commands as below on X86:

export ARCH=arm
export PATH=/usr/arm-linux-gnueabihf/bin/:$PATH
export CROSS_COMPILE=arm-none-linux-gnueabihf-

6) create a file named test.cmake as below:

set(CMAKE_SYSTEM_NAME Linux)
set(CMAKE_SYSTEM_PROCESSOR arm)
set(tools /usr/bin)
set(CMAKE_C_COMPILER ${tools}/arm-linux-gnueabihf-gcc-5)
set(CMAKE_CXX_COMPILER ${tools}/arm-linux-gnueabihf-g++-5)
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY)

7) downloaded the source code of ROS Base, execute the command to try to compile and install:

./src/catkin/bin/catkin_make_isolated -DCMAKE_TOOLCHAIN_FILE=/ros_base/test.cmake --install -DCMAKE_BUILD_TYPE=Release

However, I always get the error about Could not find boost_system and boost_thread and Could not find a package configuration file provided by "console_bridge" while compiling the package cpp_common.

I've read this link: https://answers.ros.org/question/191070/compile-roscore-for-arm-board/

but I don't want to cross-compile all of dependencies manually.

It doesn't seem that ldconfig refreches the lib path but I've also tried to export LD_LIBRARY_PATH=/usr/lib/aarch64-linux-gnu:/lib/aarch64-linux-gnu but I still get the same error.

Asked by bear234 on 2018-06-04 22:20:26 UTC

Comments

This reply is late but this article has a solution for a somewhat similar problem with pthread

Asked by teshansj on 2020-07-21 06:36:29 UTC

Answers