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

Revision history [back]

click to hide/show revision 1
initial version

From what I understand from What does the gcc warning “project parameter passing for X changed in GCC 7.1” mean?, this is a warning to tell you there could be (subtle) ABI incompatibilities between code compiled with GCC 7.1 and earlier versions:

That warning is telling you that there was a subtle ABI change (actually a conformance fix) between 6 and 7.1, such that libraries built with 6.x or earlier may not work properly when called from code built with 7.x (and vice-versa). As long as all your C++ code is built with GCC 7.1 or later, you can safely ignore this warning.

If you're building everything from sources, it's possible you're not affected by this (as everything would be built using the same version of GCC).

If you're using any of the binary packages provided by the ROS buildfarm (I haven't checked whether those exist for the platform you're using), you'd have to check which compiler(s)s are used by the buildfarm. Mixing and matching different versions may not work.

For completeness:

Finally:

catkin_make compilation warning

this is not something specific to Catkin, or anything ROS-specific: it's a change in GCC (the compiler) which would affect everyone, regardless of whether they're compiling sources which depend on ROS or not.

From what I understand from What does the gcc warning “project parameter passing for X changed in GCC 7.1” mean?, this is a warning to tell you there could be (subtle) ABI incompatibilities between code compiled with GCC 7.1 and earlier versions:

That warning is telling you that there was a subtle ABI change (actually a conformance fix) between 6 and 7.1, such that libraries built with 6.x or earlier may not work properly when called from code built with 7.x (and vice-versa). As long as all your C++ code is built with GCC 7.1 or later, you can safely ignore this warning.

If you're building everything from sources, it's possible you're not affected by this (as everything would be built using the same version of GCC).

If you're using any of the binary packages provided by the ROS buildfarm (I haven't checked whether those exist for the platform you're using), you'd have to check which compiler(s)s are used by the buildfarm. Mixing and matching different versions may not work.

For completeness:

Finally:

catkin_make compilation warning

this is not something specific to Catkin, or anything ROS-specific: it's a change in GCC (the compiler) which would affect everyone, regardless of whether they're compiling sources which depend on ROS or not.


Edit:

Yes, I use pre-build packages built for armhf. Does this mean that I sould use an earlier compiler to match the compiler of the build farm?

If you want to avoid the potential problems mentioned in the SO answer, then yes, I do believe that's what would be one way to do it.

How can I find out what the build farm is using

This is just a guess, but I would check the build output (ie: console logs) of a recent roscpp build for your architecture to see whether there are any clues there.

Perhaps @nuclearsandwich could add something here.

and how to tell cakin_make to use a different compiler?

This is not Catkin-specific. It's all CMake. So if you figure out how to select a different compiler for CMake, you could reuse that approach with Catkin.