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

    catkin_make报错

    已定时 已固定 已锁定 已移动
    机器人学
    ubuntu 20.04 catkinmake
    2
    4
    618
    正在加载更多帖子
    • 从旧到新
    • 从新到旧
    • 最多赞同
    回复
    • 在新帖中回复
    登录后回复
    此主题已被删除。只有拥有主题管理权限的用户可以查看。
    • 1
      1065639249
      最后由 编辑

      我在Ubuntu下运行ROS时,进行catkin_make时报错
      /usr/bin/ld: /lib/x86_64-linux-gnu/libapr-1.so.0: undefined reference to `uuid_generate@UUID_1.0'
      collect2: error: ld returned 1 exit status
      make[2]: *** [ros_tutorials/turtlesim/CMakeFiles/turtlesim_node.dir/build.make:176:/home/ls/catkin_ws/devel/lib/turtlesim/turtlesim_node] 错误 1
      make[1]: *** [CMakeFiles/Makefile2:3640:ros_tutorials/turtlesim/CMakeFiles/turtlesim_node.dir/all] 错误 2
      make: *** [Makefile:146:all] 错误 2
      Invoking "make -j16 -l16" failed
      是什么原因呢?求大佬解答

      1 条回复 最后回复 回复 引用 0
      • 小伊小
        机器人小伊
        最后由 编辑

        这个错误提示 /usr/bin/ld: /lib/x86_64-linux-gnu/libapr-1.so.0: undefined reference to 'uuid_generate@UUID_1.0' 表明链接器在尝试构建 turtlesim 时无法找到 uuid_generate 函数的定义,这个函数属于 libuuid 库。这通常是因为缺少相应的库文件或者库文件版本不兼容。

        以下是一些可能的解决步骤:

        1. 安装或重新安装 libuuid:
          Ubuntu 系统通常默认安装了 libuuid,但可能是版本问题或者链接问题。你可以尝试重新安装它:

          sudo apt-get update
          sudo apt-get install --reinstall uuid-dev
          
        2. 检查 libapr-1.so.0 的依赖:
          由于错误中提到了 libapr-1.so.0,可能需要检查这个库文件是否依赖于特定版本的 libuuid。你可以使用 ldd 命令来查看 libapr-1.so.0 的依赖:

          ldd /lib/x86_64-linux-gnu/libapr-1.so.0
          

          查看输出中是否有关于 libuuid 的条目,并且确认它是否指向了正确的库文件。

        3. 设置环境变量:
          如果库文件存在但链接器没有找到,可能是因为库文件的路径没有包含在链接器的搜索路径中。你可以通过设置 LD_LIBRARY_PATH 环境变量来添加额外的库搜索路径:

          export LD_LIBRARY_PATH=/usr/lib/x86_64-linux-gnu:$LD_LIBRARY_PATH
          

          注意:路径 /usr/lib/x86_64-linux-gnu 可能需要根据你系统中 libuuid 的实际位置进行调整。

        4. 清理并重新构建:
          在解决了依赖问题后,回到你的 ROS 工作空间,清理旧的构建文件并重新构建:

          cd ~/catkin_ws
          catkin_make clean
          catkin_make
          
        5. 检查 ROS 和 Ubuntu 版本兼容性:
          确保你安装的 ROS 版本与你的 Ubuntu 版本兼容。有时候,ROS 的某些版本可能不完全兼容最新的 Ubuntu 发行版。

        如果上述步骤都不能解决问题,可能需要更深入地检查 ROS 的配置或者考虑在不同的系统或虚拟机上重新设置 ROS 环境。


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

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

        1 1 条回复 最后回复 回复 引用 0
        • 1
          1065639249 @小伊
          最后由 编辑

          @小伊 我按照你的方法试了一下还是报错
          /usr/bin/ld: /usr/lib/x86_64-linux-gnu/libapr-1.so.0: undefined reference to `uuid_generate@UUID_1.0'
          collect2: error: ld returned 1 exit status
          make[2]: *** [ros_tutorials/turtlesim/CMakeFiles/turtlesim_node.dir/build.make:176:/home/ls/catkin_ws/devel/lib/turtlesim/turtlesim_node] 错误 1
          make[1]: *** [CMakeFiles/Makefile2:3640:ros_tutorials/turtlesim/CMakeFiles/turtlesim_node.dir/all] 错误 2
          make: *** [Makefile:146:all] 错误 2
          Invoking "make -j16 -l16" failed

          1 条回复 最后回复 回复 引用 0
          • 小伊小
            机器人小伊
            最后由 编辑

            这个错误信息表明在链接阶段,链接器 /usr/bin/ld 未能找到 uuid_generate 函数的定义。这个函数通常属于 libuuid 库,用于生成 UUID(Universally Unique Identifier)。错误发生在尝试构建 ROS(Robot Operating System)的 turtlesim 节点时。

            要解决这个问题,你可以尝试以下几个步骤:

            1. 安装 libuuid 库:
              如果你的系统上尚未安装 libuuid 库,你需要先安装它。在 Ubuntu 或 Debian 系统上,你可以使用以下命令安装:

              sudo apt-get update
              sudo apt-get install uuid-dev
              

              对于其他 Linux 发行版,你可能需要使用不同的包管理器或包名。

            2. 确保链接器找到 libuuid:
              在编译过程中,确保链接器知道要链接到 libuuid。如果你是在一个 CMake 项目中工作,你可能需要在 CMakeLists.txt 文件中添加如下行来链接 libuuid:

              target_link_libraries(your_target_name PRIVATE uuid)
              

              其中 your_target_name 是你的目标项目或可执行文件的名称。对于 ROS 项目,这通常是在 CMakeLists.txt 文件的底部,与 catkin_package() 一起配置。

            3. 清理并重新构建项目:
              在修改了 CMakeLists.txt 或安装了新的库之后,确保清理你的构建环境并重新构建项目:

              cd ~/catkin_ws
              catkin_make clean
              catkin_make
              
            4. 检查依赖关系:
              如果问题仍然存在,检查你的项目是否有其他依赖关系问题或版本冲突。确保所有依赖库都是兼容的版本。

            5. 查看 ROS 论坛或文档:
              如果上述步骤都不能解决问题,可能是 ROS 或其某个组件的特定问题。查看 ROS 的官方论坛、GitHub 问题跟踪器或相关文档可能会有帮助。

            通过上述步骤,你应该能够解决链接到 uuid_generate 函数时遇到的问题。如果问题依旧,请确保所有步骤都已正确执行,并检查是否有其他潜在的配置问题。


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

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

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