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

    ros2 humble版本安装gtsam失败

    已定时 已固定 已锁定 已移动 未解决
    综合问题
    ros2 humble gtsam
    3
    5
    513
    正在加载更多帖子
    • 从旧到新
    • 从新到旧
    • 最多赞同
    回复
    • 在新帖中回复
    登录后回复
    此主题已被删除。只有拥有主题管理权限的用户可以查看。
    • Z
      zzsquzz
      最后由 编辑

      安装gtsam,执行到“sudo make install”,出现错误:make[2]: *** [gtsam/CMakeFiles/gtsam.dir/build.make:538:gtsam/CMakeFiles/gtsam.dir/geometry/triangulation.cpp.o] 错误 1
      make[1]: *** [CMakeFiles/Makefile2:2900:gtsam/CMakeFiles/gtsam.dir/all] 错误 2
      make: *** [Makefile:166:all] 错误 2
      de33a1e3-6953-415c-b022-b20dfe8eac1c-c36f6fc82771d759a84e1729c3c212b.jpg

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

        遇到 make install 时出现的编译错误,通常是由于多种原因导致的,包括但不限于依赖项缺失、编译器兼容性问题、代码错误等。针对你提到的 GTSAM 在 ROS 2 Humble 版本中的安装问题,以下是一些可能的解决步骤:

        1. 检查依赖项:
          确保你已经安装了所有 GTSAM 所需的依赖项。GTSAM 依赖于一些库,如 Boost、Eigen、CMake 等。你可以查看 GTSAM 的官方文档或 GitHub 页面以获取详细的依赖项列表。

          对于 ROS 2,你可以使用 apt 来安装一些基本的依赖项:

          sudo apt update
          sudo apt install -y libboost-all-dev libeigen3-dev cmake libsuitesparse-dev
          

          注意:根据你的系统和 GTSAM 的版本,可能需要安装其他库。

        2. 检查 CMake 配置:
          在构建 GTSAM 之前,确保你的 CMake 配置是正确的。你可以使用 cmake-gui 或在命令行中运行 cmake 并检查输出以确认所有依赖项都已找到,并且没有错误或警告。

          示例命令(在 GTSAM 的源代码目录中):

          mkdir build && cd build
          cmake ..
          make VERBOSE=1
          

          使用 VERBOSE=1 可以让你看到具体的编译命令,这有助于诊断问题。

        3. 查看具体的编译错误:
          错误消息 make[2]: *** [gtsam/CMakeFiles/gtsam.dir/build.make:538: gtsam/CMakeFiles/gtsam.dir/geometry/triangulation.cpp.o] Error 1 指向了一个具体的文件 triangulation.cpp。查看该文件的编译输出(在 make VERBOSE=1 的输出中),以找到导致编译失败的具体错误。

          常见的错误可能包括类型不匹配、缺少头文件、或者编译器无法识别的语法。

        4. 检查 C++ 标准:
          GTSAM 可能需要特定的 C++ 标准(如 C++11 或更高)。确保你的 CMake 配置中设置了正确的 C++ 标准。可以在 CMakeLists.txt 文件中添加如下设置:

          set(CMAKE_CXX_STANDARD 14)
          set(CMAKE_CXX_STANDARD_REQUIRED True)
          
        5. 尝试使用不同的编译器:
          如果你使用的是 GCC 或 Clang,尝试更新到最新版本或切换到另一个版本。有时,编译器的 bug 或不兼容的更新可能会导致编译失败。

        6. 查看 GTSAM 的问题和拉取请求:
          在 GTSAM 的 GitHub 仓库中查看是否有其他人报告了类似的问题或修复了相关的问题。

        7. 清理并重新构建:
          在继续之前,清理旧的构建文件并重新运行 CMake 和 make:

          cd <GTSAM_build_directory>
          make clean
          rm -rf CMakeCache.txt CMakeFiles
          cmake ..
          make
          

        如果上述步骤都不能解决问题,你可能需要更详细地查看编译错误,或者考虑在 GTSAM 的社区或论坛中寻求帮助。


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

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

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

          @小伊 error: ‘library_version_type’ in namespace ‘boost::serialization’ does not name a type; did you mean ‘item_version_type’?发现具体错误信息是这样的

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

            这个错误信息表明在你的代码中,boost::serialization 命名空间下没有找到名为 library_version_type 的类型。这通常是因为以下几个原因:

            1. Boost 版本问题:你可能使用的 Boost 版本中不包含 library_version_type 这个类型,或者这个类型在不同的版本中有所变动。library_version_type 是用于在序列化时追踪 Boost 序列化库版本的一个类型,但在某些版本的 Boost 中可能不存在或已被替换。

            2. 包含错误的头文件:确保你已经包含了正确的 Boost 序列化头文件。通常,对于序列化功能,你需要包含 <boost/archive/text_oarchive.hpp>、<boost/archive/text_iarchive.hpp> 或其他与你的序列化格式相关的头文件。但是,library_version_type 可能不直接通过这些文件引入,而是需要通过其他方式获取。

            3. 命名空间或类型名错误:可能你的代码中使用了错误的命名空间或类型名。例如,你可能记错了类型名或者该类型位于不同的命名空间中。

            解决步骤

            1. 检查 Boost 版本:

              • 确认你使用的 Boost 版本是否支持你正在尝试使用的功能。
              • 如果可能,尝试升级到一个更新的 Boost 版本。
            2. 查阅文档:

              • 查阅你当前 Boost 版本的官方文档,确认 library_version_type 的存在和用法。
              • 如果该类型在新版本中已被移除或替换,查看文档以了解替代方案。
            3. 修改代码:

              • 如果 library_version_type 确实不存在,你可能需要寻找替代的方法来实现相同的功能。
              • 如果你的目的是跟踪序列化库的版本,可能需要寻找其他方式来获取或处理这个信息。
            4. 社区和论坛:

              • 访问 Boost 社区论坛或相关开发者社区,询问关于 library_version_type 的问题。
              • 可能其他开发者已经遇到过类似的问题,并找到了解决方案。
            5. 检查包含的头文件:

              • 确保你已经包含了所有必要的 Boost 序列化头文件。
              • 如果你的代码依赖于特定的序列化格式或特性,请确保这些都被正确包含。

            通过上述步骤,你应该能够解决关于 library_version_type 的问题,或者找到一种替代方法来实现你的需求。


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

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

            1 条回复 最后回复 回复 引用 0
            • 1
              1920304200 @zzsquzz
              最后由 编辑

              @zzsquzz 请问您解决了吗 我也遇到了同样的问题

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