ros2 foxy Ubuntu 16.04 compatibility
I have a third party library as a binary .so file that appears to require Ubuntu 16.04 / GCC 5.5 (yes it makes me sad too). I need to wrap it ros2 so we can use it in other parts of our system. In all other parts of our system we're running Ubuntu 20.04 with ROS2 foxy. I'm trying to isolate the older library from our software by running it in a separate docker container--any idea of the level of effort that would be required to backport foxy to 16.04 or would it is possible to run an earlier version of ros2 (like crystal) and have it communicate with ros2 nodes from foxy in a separate container? or are there compatibility issues?
Not an answer to your question, so a comment: have you considered other ways of wrapping that library? Perhaps this could be a use-case for Micro-ROS. It's fairly stand-alone and can probably be compiled with GCC 5.
re: building Foxy with GCC 5: you can always try a source build of the bare minimum (ie:
rclc
andrclcpp
etc). I expect lots of difficulties there though (Foxy targets/uses/requires C++14 fi).Also:
why you do believe it appears to require that version of GCC?
The vendor that gave us the library said that it was compiled with GCC 5.5. The library is seg faulting as soon as we try to do anything with it. I believe there is ABI compatibility since GCC 3 or 4 so I didn't think there would be an issue using with us building it with GCC 9, but it was kind of looking like that's what it was (which is why I posted this question), since posting though, we spun up a docker container with 16.04 / GCC 5.5 (which I believe has full c++ 14 support) and got the same seg faults so it's probably not an ABI issue.
It would be nice whoever down-voted this to at least leave a comment as to why.
I would expect the biggest difficulty to be the dependencies of Foxy.
There are likely not that many though for just the core ROS 2 packages. You will most likely have to edit/disable some checks for certain things, but that's just an assumption.