I wanted to start a new thread for this topic since I'm sure I'll have lots of questions, and in case others are interested.
To set the stage:
- I have an ARM embedded target that runs a very light Linux kernel with minimal filesystem capabilities.
- I only have a few commonly-used terminal commands built into the busybox filesystem
- I traditionally (in non-ROS product code) cross-compile on an x86 Ubuntu environment
- The cross-compile toolchain I traditionally use is built on glibc 2.13, Linux kernel 2.6.36, binutils 2.21, and gcc linaro 4.5
- I know I have some play in the version of gcc I use, as long as it is compatible with glibc 2.13.
I tried cross-compiling ROS 2 previously, but kept hitting roadblocks. So I decided to attempt a build on a native target that matched the specs of my cross-compile toolchain.
I found that in the Utilite embedded computer provided by CompuLab. It comes preloaded with Ubuntu 12.04. With a few adjustments, and a lot of manual compilation of the tools and dependencies for ROS 2, I got a successful ARM build that runs on my target ARM.
I am going to re-tackle the cross-compile so I'm not dependent on an embedded ARM device for continuous integration, building, deployment, etc.
My build command looks like this:
src/ament/ament_tools/scripts/ament.py build --cmake-args -DCMAKE_CXX_COMPILER=/path/to/my/cross-g++ -DCMAKE_C_COMPILER=/path/to/my/cross-gcc -DCMAKE_LINKER=/path/to/my/cross-ld --
The places where I start to break down:
- example_interfaces
- rcl_interraces
/lib/ld-linux.so.3: No such file or directory
Traceback (most recent call last):
...blah...
...blah...
...blah...
File "/usr/lib/python3.4/subprocess.py", line 561, in check_call
raise CalledProcessError(retcode, cmd)
return non-zero exit status 255
I am committed to help solve this problem because working on another platform for development, and quickly building/deploying using cross-compile is a much faster workflow. ROS takes SO LONG to build on a little ARM processor. :-)
Thanks.