鱼香ROS社区
    • 版块
    • 最新
    • 未解决
    • 已解决
    • 群组
    • 注册
    • 登录
    紧急通知:禁止一切关于政治&VPN翻墙等话题,发现相关帖子会立马删除封号
    提问前必看的发帖注意事项: 社区问答规则(小鱼个人)更新 | 高质量帖子发布指南

    3.4.4.5在功能抱中使用QT报错。

    已定时 已固定 已锁定 已移动
    ROS2机器人开发:从入门到实践
    ros2 qt 报错
    3
    16
    722
    正在加载更多帖子
    • 从旧到新
    • 从新到旧
    • 最多赞同
    回复
    • 在新帖中回复
    登录后回复
    此主题已被删除。只有拥有主题管理权限的用户可以查看。
    • 小伊小
      机器人小伊
      最后由 编辑

      从你提供的错误信息和代码来看,这里有几个可能的问题和解决方案:

      1. Qt 平台插件错误:

        qt.qpa.plugin: Could not find the Qt platform plugin "wayland" in ""
        

        这个错误表明 Qt 运行时无法找到名为 "wayland" 的平台插件。这通常是因为 Qt 的配置或安装问题。Ubuntu 22.04 默认使用 Wayland 显示服务器,而 Qt 应用程序需要找到相应的插件来与 Wayland 通信。

        解决方案:

        • 确保 Qt 安装完整,特别是包含所有必要的插件。
        • 你可以尝试设置环境变量 QT_QPA_PLATFORM_PLUGIN_PATH 指向包含 wayland 插件的目录。例如,如果 Qt 安装在 /opt/Qt,你可以尝试:
          export QT_QPA_PLATFORM_PLUGIN_PATH=/opt/Qt/plugins/platforms
          
        • 另外,确保你的 Qt 版本与你的 Ubuntu 版本兼容。
      2. 符号查找错误:

        symbol lookup error: /snap/core20/current/lib/x86_64-linux-gnu/libpthread.so.0: undefined symbol: __libc_pthread_init, version GLIBC_PRIVATE
        

        这个错误表明你的应用程序在尝试使用 libpthread.so.0 时遇到了问题,特别是与 GLIBC 的私有版本相关的符号。这通常与库版本冲突或错误的库链接有关。

        解决方案:

        • 检查你的系统中是否有多个版本的 libpthread 或其他相关库,并确保 ROS2 和 Qt 链接到正确的版本。
        • 尝试更新你的系统和所有相关的库到最新版本。
        • 如果你使用的是 Snap 安装的 ROS2 或其他软件,可能会遇到与原生系统库不兼容的问题。考虑使用非 Snap 版本或从源代码编译。
      3. CMakeLists.txt 和构建配置:

        • 确保你的 CMakeLists.txt 正确设置了 Qt5 的路径和组件。
        • 检查你的构建环境是否正确设置了所有必要的路径和变量。
      4. 其他注意事项:

        • 确保你的 ROS2 环境正确设置,并且所有依赖都已正确安装。
        • 检查你的 hello_qt.cpp 代码是否有语法错误(虽然你提供的代码看起来语法上是正确的,但注意你使用了 HTML 实体 &lt; 和 &gt; 而不是 < 和 >)。

      最后,如果问题仍然存在,尝试在一个新的、干净的 Ubuntu 22.04 环境中重新安装 ROS2 和 Qt,以排除任何特定于系统或配置的问题。


      以上为生成回答,仅供参考~

      我是小伊,已接入ChatGpt,所有回复,仅供参考~

      1 条回复 最后回复 回复 引用 0
      • ganyuanzhenG
        Elysia 技术大佬 @261962418
        最后由 编辑

        @261962418 在命令前加上 QT_QPA_PLATFORM=xcb

        我难道就没有一段英勇,美好而又虚幻的过去……幸运地写在金叶片上?

        2 1 条回复 最后回复 回复 引用 0
        • 2
          261962418 @ganyuanzhen
          最后由 编辑

          @ganyuanzhen 在哪一条命令上加阿

          ganyuanzhenG 1 条回复 最后回复 回复 引用 0
          • ganyuanzhenG
            Elysia 技术大佬 @261962418
            最后由 编辑

            @261962418 ros2 run status_display hello_qt 前面,

            QT_QPA_PLATFORM=xcb ros2 run status_display hello_qt
            

            我难道就没有一段英勇,美好而又虚幻的过去……幸运地写在金叶片上?

            2 1 条回复 最后回复 回复 引用 0
            • 2
              261962418 @ganyuanzhen
              最后由 编辑

              @ganyuanzhen 还是一样
              wan@wan-ThinkPad-X1-Yoga-3rd:~/chapt3/topic_practice_ws$ QT_QPA_PLATFORM=xcb ros2 run status_display hello_qt
              /home/wan/chapt3/topic_practice_ws/install/status_display/lib/status_display/hello_qt: symbol lookup error: /snap/core20/current/lib/x86_64-linux-gnu/libpthread.so.0: undefined symbol: __libc_pthread_init, version GLIBC_PRIVATE
              [ros2run]: Process exited with failure 127

              ganyuanzhenG 1 条回复 最后回复 回复 引用 0
              • ganyuanzhenG
                Elysia 技术大佬 @261962418
                最后由 编辑

                @261962418 在 3.4.4.5在功能抱中使用QT报错。 中说:

                /snap/core20/current/lib/x86_64-linux-gnu/libpthread.so.0: undefined symbol: __libc_pthread_init, version GLIBC_PRIVATE

                看起来你的系统环境设置有些问题,按理说不应该识别到snap里面的运行库。看看是不是 ld.so.conf 或者LD_LIBRARY_PATH有问题。

                或者可以卸载掉snap,不过这个会导致firefox也一并卸载掉。

                我难道就没有一段英勇,美好而又虚幻的过去……幸运地写在金叶片上?

                ganyuanzhenG 1 条回复 最后回复 回复 引用 0
                • ganyuanzhenG
                  Elysia 技术大佬 @ganyuanzhen
                  最后由 ganyuanzhen 编辑

                  @ganyuanzhen

                  unset GTK_PATH
                  unset GIO_MODULE_DIR

                  执行这个以后再看看呢()

                  我难道就没有一段英勇,美好而又虚幻的过去……幸运地写在金叶片上?

                  2 1 条回复 最后回复 回复 引用 0
                  • 2
                    261962418 @ganyuanzhen
                    最后由 编辑

                    @ganyuanzhen
                    wan@wan-ThinkPad-X1-Yoga-3rd:~/chapt3/topic_practice_ws$ unset GTK_PATH
                    unset GIO_MODULE_DIR
                    wan@wan-ThinkPad-X1-Yoga-3rd:~/chapt3/topic_practice_ws$ QT_QPA_PLATFORM=xcb ros2 run status_display hello_qt
                    Gtk-Message: 23:45:22.302: Failed to load module "canberra-gtk-module"
                    Gtk-Message: 23:45:22.302: Failed to load module "canberra-gtk-module"

                    ganyuanzhenG 1 条回复 最后回复 回复 引用 0
                    • ganyuanzhenG
                      Elysia 技术大佬 @261962418
                      最后由 编辑

                      @261962418 在 3.4.4.5在功能抱中使用QT报错。 中说:

                      @ganyuanzhen
                      wan@wan-ThinkPad-X1-Yoga-3rd:~/chapt3/topic_practice_ws$ unset GTK_PATH
                      unset GIO_MODULE_DIR
                      wan@wan-ThinkPad-X1-Yoga-3rd:~/chapt3/topic_practice_ws$ QT_QPA_PLATFORM=xcb ros2 run status_display hello_qt
                      Gtk-Message: 23:45:22.302: Failed to load module "canberra-gtk-module"
                      Gtk-Message: 23:45:22.302: Failed to load module "canberra-gtk-module"

                      是不是在snap安装的vscode里面执行的命令。

                      单独用系统的终端执行试一下呢,

                      我难道就没有一段英勇,美好而又虚幻的过去……幸运地写在金叶片上?

                      2 1 条回复 最后回复 回复 引用 0
                      • 2
                        261962418 @ganyuanzhen
                        最后由 编辑

                        @ganyuanzhen 系统中端是这样的
                        wan@wan-ThinkPad-X1-Yoga-3rd:~/chapt3/topic_practice_ws$ unset GTK_PATH
                        unset GIO_MODULE_DIR
                        wan@wan-ThinkPad-X1-Yoga-3rd:~/chapt3/topic_practice_ws$ QT_QPA_PLATFORM=xcb ros2 run status_display hello_qt
                        Package 'status_display' not found

                        ganyuanzhenG 1 条回复 最后回复 回复 引用 0
                        • ganyuanzhenG
                          Elysia 技术大佬 @261962418
                          最后由 编辑

                          @261962418 在 3.4.4.5在功能抱中使用QT报错。 中说:

                          @ganyuanzhen 系统中端是这样的
                          wan@wan-ThinkPad-X1-Yoga-3rd:~/chapt3/topic_practice_ws$ unset GTK_PATH
                          unset GIO_MODULE_DIR
                          wan@wan-ThinkPad-X1-Yoga-3rd:~/chapt3/topic_practice_ws$ QT_QPA_PLATFORM=xcb ros2 run status_display hello_qt
                          Package 'status_display' not found

                          一样source一下你工作空间下的setup文件,然后执行 QT_QPA_PLATFORM=xcb ros2 run status_display hello_qt

                          原理上不会有问题,snap安装的软件,里面的环境配置比较特殊,所以会出一些问题

                          我难道就没有一段英勇,美好而又虚幻的过去……幸运地写在金叶片上?

                          2 1 条回复 最后回复 回复 引用 0
                          • 2
                            261962418 @ganyuanzhen
                            最后由 编辑

                            @ganyuanzhen 系统中端是这样的
                            wan@wan-ThinkPad-X1-Yoga-3rd:~/chapt3/topic_practice_ws$ source install/setup.bash
                            wan@wan-ThinkPad-X1-Yoga-3rd:~/chapt3/topic_practice_ws$ QT_QPA_PLATFORM=xcb ros2 run status_display hello_qt
                            Warning: Ignoring XDG_SESSION_TYPE=wayland on Gnome. Use QT_QPA_PLATFORM=wayland to run on Wayland anyway.

                            vscode是这样的

                            wan@wan-ThinkPad-X1-Yoga-3rd:~/chapt3/topic_practice_ws$ source install/setup.bash
                            wan@wan-ThinkPad-X1-Yoga-3rd:~/chapt3/topic_practice_ws$ QT_QPA_PLATFORM=xcb ros2 run status_display hello_qt
                            Gtk-Message: 23:55:43.056: Failed to load module "canberra-gtk-module"
                            Gtk-Message: 23:55:43.057: Failed to load module "canberra-gtk-module"
                            ^C[ros2run]: Interrupt

                            ganyuanzhenG 1 条回复 最后回复 回复 引用 0
                            • ganyuanzhenG
                              Elysia 技术大佬 @261962418
                              最后由 编辑

                              @261962418 Warning: Ignoring XDG_SESSION_TYPE=wayland on Gnome. Use QT_QPA_PLATFORM=wayland to run on Wayland anyway.

                              这个问题,可以试着换一下GNOME Xorg会话。并不影响程序的运行和显示

                              我难道就没有一段英勇,美好而又虚幻的过去……幸运地写在金叶片上?

                              ganyuanzhenG 1 条回复 最后回复 回复 引用 0
                              • ganyuanzhenG
                                Elysia 技术大佬 @ganyuanzhen
                                最后由 编辑

                                @ganyuanzhen

                                网上也有这个办法

                                
                                
                                # 解决方法
                                rambo@test:~$ sudo nano /etc/gdm3/custom.conf
                                WaylandEnable=false # 取消注释,即在当前图形化中不开启WaylandEn
                                ablerambo@test:~$ sudo systemctl restart gdm3 # 重启服务
                                
                                

                                我用的是KDE桌面,不是GNOME,所以没遇到过这个报错~

                                我难道就没有一段英勇,美好而又虚幻的过去……幸运地写在金叶片上?

                                2 1 条回复 最后回复 回复 引用 0
                                • 2
                                  261962418 @ganyuanzhen
                                  最后由 编辑

                                  @ganyuanzhen 好的,感谢大老的指教和方向,我寨SS,已经卡在这一天了☂

                                  1 条回复 最后回复 回复 引用 0
                                  • 小鱼小 小鱼 在 中 引用了 这个主题
                                  • 第一个帖子
                                    最后一个帖子
                                  皖ICP备16016415号-7
                                  Powered by NodeBB | 鱼香ROS