首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ROS2 rosbridge_suite dlopen找不到lib路径

ROS2 rosbridge_suite dlopen找不到lib路径
EN

Stack Overflow用户
提问于 2022-03-08 08:21:51
回答 1查看 260关注 0票数 0

我最近为我的苹果硅Mac制作了ROS2银河,我想在这个ROS上使用rosbridge_suite

因此,我在rosbridge_suite文件夹下添加了src回购,并再次进行了构建。

当我使用下面的命令启动rosbridge时

代码语言:javascript
复制
ros2 launch rosbridge_server rosbridge_websocket_launch.xml

我遇到了这些错误

代码语言:javascript
复制
[rosapi_node-2] Traceback (most recent call last):
[rosapi_node-2]   File "/Users/parkjb/ros2/ros2_galactic/install/lib/python3.9/site-packages/rclpy/context.py", line 69, in init
[rosapi_node-2]     if self.__context is not None:
[rosapi_node-2] AttributeError: 'Context' object has no attribute '_Context__context'
[rosapi_node-2]
[rosapi_node-2] During handling of the above exception, another exception occurred:
[rosapi_node-2]
[rosapi_node-2] Traceback (most recent call last):
[rosapi_node-2]   File "/Users/parkjb/ros2/ros2_galactic/install/lib/rosapi/rosapi_node", line 330, in <module>
[rosapi_node-2]     main()
[rosapi_node-2]   File "/Users/parkjb/ros2/ros2_galactic/install/lib/rosapi/rosapi_node", line 318, in main
[rosapi_node-2]     rclpy.init(args=args)
[rosapi_node-2]   File "/Users/parkjb/ros2/ros2_galactic/install/lib/python3.9/site-packages/rclpy/__init__.py", line 76, in init
[rosapi_node-2]     return context.init(args, domain_id=domain_id)
[rosapi_node-2]   File "/Users/parkjb/ros2/ros2_galactic/install/lib/python3.9/site-packages/rclpy/context.py", line 72, in init
[rosapi_node-2]     self.__context = _rclpy.Context(
[rosapi_node-2] rclpy._rclpy_pybind11.RCLError: Failed to initialize init options: failed to load shared library 'librmw_cyclonedds_cpp.dylib' due to dlopen error: dlopen(librmw_cyclonedds_cpp.dylib, 0x0001): tried: '/opt/homebrew/lib/librmw_cyclonedds_cpp.dylib' (no such file), 'librmw_cyclonedds_cpp.dylib' (no such file), '/usr/local/lib/librmw_cyclonedds_cpp.dylib' (no such file), '/usr/lib/librmw_cyclonedds_cpp.dylib' (no such file), '/Users/parkjb/ros2/ros2_galactic/librmw_cyclonedds_cpp.dylib' (no such file), at /Users/parkjb/ros2/ros2_galactic/src/ros2/rcutils/src/shared_library.c:99, at /Users/parkjb/ros2/ros2_galactic/src/ros2/rmw_implementation/rmw_implementation/src/functions.cpp:77, at /Users/parkjb/ros2/ros2_galactic/src/ros2/rcl/rcl/src/rcl/init_options.c:75
[ERROR] [rosapi_node-2]: process has died [pid 26947, exit code 1, cmd '/Users/parkjb/ros2/ros2_galactic/install/lib/rosapi/rosapi_node --ros-args -r __node:=rosapi --params-file /var/folders/n_/sqhbl57x7_b0h_v4ql6ht5m00000gn/T/launch_params_vss_roak --params-file /var/folders/n_/sqhbl57x7_b0h_v4ql6ht5m00000gn/T/launch_params_7bjyom3b --params-file /var/folders/n_/sqhbl57x7_b0h_v4ql6ht5m00000gn/T/launch_params_2_8xl_3l'].

代码语言:javascript
复制
[rosbridge_websocket-1] Traceback (most recent call last):
[rosbridge_websocket-1]   File "/Users/parkjb/ros2/ros2_galactic/install/lib/python3.9/site-packages/rclpy/context.py", line 69, in init
[rosbridge_websocket-1]     if self.__context is not None:
[rosbridge_websocket-1] AttributeError: 'Context' object has no attribute '_Context__context'
[rosbridge_websocket-1]
[rosbridge_websocket-1] During handling of the above exception, another exception occurred:
[rosbridge_websocket-1]
[rosbridge_websocket-1] Traceback (most recent call last):
[rosbridge_websocket-1]   File "/Users/parkjb/ros2/ros2_galactic/install/lib/rosbridge_server/rosbridge_websocket", line 332, in <module>
[rosbridge_websocket-1]     main()
[rosbridge_websocket-1]   File "/Users/parkjb/ros2/ros2_galactic/install/lib/rosbridge_server/rosbridge_websocket", line 316, in main
[rosbridge_websocket-1]     rclpy.init(args=args)
[rosbridge_websocket-1]   File "/Users/parkjb/ros2/ros2_galactic/install/lib/python3.9/site-packages/rclpy/__init__.py", line 76, in init
[rosbridge_websocket-1]     return context.init(args, domain_id=domain_id)
[rosbridge_websocket-1]   File "/Users/parkjb/ros2/ros2_galactic/install/lib/python3.9/site-packages/rclpy/context.py", line 72, in init
[rosbridge_websocket-1]     self.__context = _rclpy.Context(
[rosbridge_websocket-1] rclpy._rclpy_pybind11.RCLError: Failed to initialize init options: failed to load shared library 'librmw_cyclonedds_cpp.dylib' due to dlopen error: dlopen(librmw_cyclonedds_cpp.dylib, 0x0001): tried: '/opt/homebrew/lib/librmw_cyclonedds_cpp.dylib' (no such file), 'librmw_cyclonedds_cpp.dylib' (no such file), '/usr/local/lib/librmw_cyclonedds_cpp.dylib' (no such file), '/usr/lib/librmw_cyclonedds_cpp.dylib' (no such file), '/Users/parkjb/ros2/ros2_galactic/librmw_cyclonedds_cpp.dylib' (no such file), at /Users/parkjb/ros2/ros2_galactic/src/ros2/rcutils/src/shared_library.c:99, at /Users/parkjb/ros2/ros2_galactic/src/ros2/rmw_implementation/rmw_implementation/src/functions.cpp:77, at /Users/parkjb/ros2/ros2_galactic/src/ros2/rcl/rcl/src/rcl/init_options.c:75
[ERROR] [rosbridge_websocket-1]: process has died [pid 26946, exit code 1, cmd '/Users/parkjb/ros2/ros2_galactic/install/lib/rosbridge_server/rosbridge_websocket --ros-args -r __node:=rosbridge_websocket --params-file /var/folders/n_/sqhbl57x7_b0h_v4ql6ht5m00000gn/T/launch_params_0xmoxvgm --params-file /var/folders/n_/sqhbl57x7_b0h_v4ql6ht5m00000gn/T/launch_params_ot_3hvt9 --params-file /var/folders/n_/sqhbl57x7_b0h_v4ql6ht5m00000gn/T/launch_params_zd34jhl5 --params-file /var/folders/n_/sqhbl57x7_b0h_v4ql6ht5m00000gn/T/launch_params_den13fk1 --params-file /var/folders/n_/sqhbl57x7_b0h_v4ql6ht5m00000gn/T/launch_params_53o5ojte --params-file /var/folders/n_/sqhbl57x7_b0h_v4ql6ht5m00000gn/T/launch_params_umglw4w2 --params-file /var/folders/n_/sqhbl57x7_b0h_v4ql6ht5m00000gn/T/launch_params_868rt_1u --params-file /var/folders/n_/sqhbl57x7_b0h_v4ql6ht5m00000gn/T/launch_params_d70ymv3p --params-file /var/folders/n_/sqhbl57x7_b0h_v4ql6ht5m00000gn/T/launch_params_zr0nset_ --params-file /var/folders/n_/sqhbl57x7_b0h_v4ql6ht5m00000gn/T/launch_params_6axnx4vf --params-file /var/folders/n_/sqhbl57x7_b0h_v4ql6ht5m00000gn/T/launch_params_ln9ct7c_ --params-file /var/folders/n_/sqhbl57x7_b0h_v4ql6ht5m00000gn/T/launch_params_8yuje8ja'].

看起来dlopen找不到到lib的路径,所以我检查了我的$DYLD_LIBRARY_PATH

/Users/parkjb/ros2/ros2_galactic/install/opt/yaml_cpp_vendor/lib:/Users/parkjb/ros2/ros2_galactic/install/opt/rviz_ogre_vendor/lib:/Users/parkjb/ros2/ros2_galactic/install/lib

我检查了dlopen在/Users/parkjb/ros2/ros2_galactic/install/lib下找到的目标dylib,但是dlopen没有搜索路径。(仅根据错误消息搜索./opt/homebrew/lib/usr/local/lib/usr/lib~/ros2/ros2_galactic )

如何使dlopen搜索想要的路径~/ros2/ros2_galactic/install/lib

如何构建http://mamykin.com/posts/building-ros2-on-macos-big-sur-m1/ (与当前环境相同)

EN

回答 1

Stack Overflow用户

发布于 2022-03-08 08:40:59

解决这个错误的方法相当愚蠢,仍然需要更明确的方法来解决它。

我只是通过以下命令将~/ros2/ros2_galactic/install/lib中的整个文件和文件夹软链接到~/ros2/ros2_galactic

代码语言:javascript
复制
cd ~/ros2/ros2_galactic
ln -s install/lib/* .

lol:D

编辑--也许是SIP的一个问题

在恢复模式下禁用csrutil可能有帮助。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71391910

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档