Skip to content

microxrcedds_agent.so fails to link in cross environment #258

@Ryanf55

Description

@Ryanf55

Describe the bug
I tried using a cross compile workflow for Micro ROS Agent and it has linker errors.

To Reproduce
Steps to reproduce the behaviour:

  1. Clone repo on this branch and follow the dockerized instructions: https://github.com/Ryanf55/x-ros/tree/micro-ros-agent
  2. Compile the micro ros agent as explained
  3. Observe the following error:
# [  2%] Linking CXX shared library libmicroxrcedds_agent.so
# /usr/lib/gcc-cross/aarch64-linux-gnu/11/../../../../aarch64-linux-gnu/bin/ld: /opt/ros/humble/lib/libfastrtps.so.2.6.8: error adding symbols: file in wrong format

The linker is incorrectly trying to link to /opt/ros/humble/lib/libfastrtps.so.2.6.8. It should be linking to the shared library in the sysroot, not the host.

Expected behaviour
Successful compilation in a sysroot and linkage only to libraries in the sysroot.

System information (please complete the following information):

  • OS: Host OS Ubuntu 22
  • ROS 2 humble on host OS
  • Target OS: Ubuntu 22

Additional context

I have ROS 2 humble installed on the host OS. MicroROS should compile in the sysroot and ignore all host libraries.
Because it does not ignore host libraries, it is finding libraries of the wrong architecture.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions