ROS2在Raspbian Buster上编译错误总结

请注意:下面的问题是在Raspbian Buster上面编译ROS2 Eloquent Elusor - Patch Release 1(或者之前的release)有关。

1、rcutils的错误:test_atomics.c:(.text+0x11a8): undefined reference to `__atomic_store_8'

受影响ros2版本:dashing, eloquent

原因:没有链接libatomic。

解决:在src/ros2/rcutils下面更改CMakeList.txt:

找到:

if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "Clang")
  add_compile_options(-Wall -Wextra -Wpedantic)
endif()

修改为:

if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "Clang")
  add_compile_options(-Wall -Wextra -Wpedantic)
  add_link_options(-latomic)
endif()

具体请参阅:https://github.com/ros2/rcutils/issues/171

与此类似的错误在下面的Package里面也有,也都需要修改CMakeLists.txt:

Package CMakefile所在位置 (下面的目录都是在src下面,src为eloquent的源代码src目录)
rcl ros2/rcl/rcl*
rcl_action ros2/rcl/rcl_action
rcl_lifecycle ros2/rcl/rcl_lifecycle
rclcpp ros2/rclcpp
test_communication ros2/system_tests/test_communication

 

 

 

 

 

 

*:这里的CMakeList.txt不改也可以编译通过,但是ros2启动python程序的时候就会提示下面的出错:

Failed to load entry point 'launch': /home/xxxx/ros2_eloquent_ws/install/rcl/lib/librcl.so: undefined symbol: __atomic_exchange_8
The C extension '/home/ningling/ros2_eloquent_ws/install/rclpy/lib/python3.7/site-packages/rclpy/_rclpy.cpython-37m-arm-linux-gnueabihf.so' failed to be imported while being present on the system. Please refer to 'https://index.ros.org/doc/ros2/Troubleshooting/#import-failing-even-with-library-present-on-the-system' for possible solutions

2、zstd_vendor问题

受影响ROS2版本:any

原因:下载速度太慢,文件名为zstd-1.4.4.zip。

解决:

  • 手工下载zstd-1.4.4.zip,链接:https://codeload.github.com/facebook/zstd/zip/v1.4.4
  • 然后改成:v1.4.4.zip。
  • cp到build/zstd_vendor/zstd-1.4.4-prefix/src里面

3、share_queues_vendor问题

受影响版本:any

原因:下载速度太慢,文件名为concurrentqueue-8f65a8734d77c3cc00d74c0532efca872931d3ce.zip

解决:

  • 手工下载concurrentqueue-8f65a8734d77c3cc00d74c0532efca872931d3ce.zip,链接:https://codeload.github.com/cameron314/concurrentqueue/zip/8f65a8734d77c3cc00d74c0532efca872931d3ce
  • 更改文件名为8f65a8734d77c3cc00d74c0532efca872931d3ce.zip
  • cp到build/shared_queues_vendor/multiple

4、rviz_ogre_vendor迟迟没就进展

原因:下载速度慢,文件在https://github.com/OGRECave/ogre/archive/v1.12.1.zip,下载的时候文件名为ogre-1.12.1.zip(122M左右)。

解决:

  • 手动下载
  • 更改文件名为v1.12.1.zip
  • cp到build/rviz_ogre_vendor/ogre-v1.12.1-prefix/src

 

你可能感兴趣的:(ROS2在Raspbian Buster上编译错误总结)