在 Arch Linux ARM 中编译 ros-indigo-qt-gui-cpp 时出现的问题

Problems during compilation of ros-indigo-qt-gui-cpp in Arch Linux ARM

我在 Arch Linux ARM 上使用 ROS Indigo,我正在尝试从 AUR 安装包 ros-indigo-qt-gui-cpp。

但是出现如下错误:


    ==>开始构建()...
    -- 使用 CATKIN_DEVEL_PREFIX:/home/hiago/packages/qt_gui_core-release-release-indigo-qt_gui_cpp-0.2.30-0/src/build/devel
    -- 使用 CMAKE_PREFIX_PATH:/opt/ros/indigo
    -- 这个工作区覆盖:/opt/ros/indigo
    -- 找到 PythonInterp: /usr/bin/python2(找到版本“2.7.12”)
    -- 使用 PYTHON_EXECUTABLE:/usr/bin/python2
    -- 使用默认 Python 包布局
    -- 使用 empy: /usr/lib/python2.7/site-packages/em.pyc
    -- 使用 CATKIN_ENABLE_TESTING:开
    -- 构建二进制包时跳过 enable_testing()
    -- 使用 CATKIN_TEST_RESULTS_DIR:/home/hiago/packages/qt_gui_core-release-release-indigo-qt_gui_cpp-0.2.30-0/src/build/test_results
    -- 找到 gtest:将构建 gtests
    -- 使用 Python 鼻子测试:/usr/bin/nosetests-2.7
    -- 柳絮 0.6.18
    /usr/share/cmake-3.6/Modules/FindBoost.cmake:743 处的 CMake 警告(消息):
      导入的目标不适用于 Boost 版本 106200
    调用堆栈(最近的调用在前):
      /usr/share/cmake-3.6/Modules/FindBoost.cmake:842 (_Boost_COMPONENT_DEPENDENCIES)
      /usr/share/cmake-3.6/Modules/FindBoost.cmake:1395 (_Boost_MISSING_DEPENDENCIES)
      CMakeLists.txt:5 (find_package)


    /usr/share/cmake-3.6/Modules/FindBoost.cmake:743 处的 CMake 警告(消息):
      导入的目标不适用于 Boost 版本 106200
    调用堆栈(最近的调用在前):
      /usr/share/cmake-3.6/Modules/FindBoost.cmake:842 (_Boost_COMPONENT_DEPENDENCIES)
      /usr/share/cmake-3.6/Modules/FindBoost.cmake:1395 (_Boost_MISSING_DEPENDENCIES)
      CMakeLists.txt:5 (find_package)


    -- 提升版本:1.62.0
    -- 找到以下 Boost 库:
     -    文件系统
     -    系统
    /opt/ros/indigo/share/python_qt_binding/cmake/shiboken_helper.cmake:17 (find_package) 处的 CMake 警告:
      通过在 CMAKE_MODULE_PATH 中不提供 "FindShiboken.cmake" 这个项目有
      让CMake找了一个"Shiboken"提供的包配置文件,
      但是 CMake 没有找到。

      找不到 "Shiboken" 提供的包配置文件
      以下名称:

        ShibokenConfig.cmake
        世博研-config.cmake

      将"Shiboken"的安装前缀添加到CMAKE_PREFIX_PATH或设置
      "Shiboken_DIR" 到包含上述文件之一的目录。如果
      "Shiboken"提供单独的开发包或SDK,一定要有
      已安装。
    调用堆栈(最近的调用在前):
      src/qt_gui_cpp_shiboken/CMakeLists.txt:41(包含)


    /opt/ros/indigo/share/python_qt_binding/cmake/shiboken_helper.cmake:21 (find_package) 处的 CMake 警告:
      通过在 CMAKE_MODULE_PATH 中不提供 "FindPySide.cmake" 这个项目有
      要求 CMake 找到 "PySide" 提供的包配置文件,但是
      CMake 没有找到。

      找不到 "PySide" 提供的包配置文件
      以下名称:

        PySideConfig.cmake
        pyside-config.cmake

      将"PySide"的安装前缀添加到CMAKE_PREFIX_PATH或设置
      "PySide_DIR" 到包含上述文件之一的目录。如果"PySide"
      提供单独的开发包或SDK,确保已经
      安装。
    调用堆栈(最近的调用在前):
      src/qt_gui_cpp_shiboken/CMakeLists.txt:41(包含)


    /opt/ros/indigo/share/python_qt_binding/cmake/shiboken_helper.cmake:34 (find_package) 处的 CMake 警告:
      通过不在 CMAKE_MODULE_PATH 中提供 "FindGeneratorRunner.cmake" 这
      项目已要求 CMake 查找由提供的包配置文件
      "GeneratorRunner",但是CMake没有找到。

      找不到 "GeneratorRunner" 提供的包配置文件
      使用以下任何名称:

        GeneratorRunnerConfig.cmake
        generatorrunner-config.cmake

      将"GeneratorRunner"的安装前缀添加到CMAKE_PREFIX_PATH或
      将 "GeneratorRunner_DIR" 设置为包含上述文件之一的目录。
      如果"GeneratorRunner"提供单独的开发包或SDK,则
      确定已安装。
    调用堆栈(最近的调用在前):
      src/qt_gui_cpp_shiboken/CMakeLists.txt:41(包含)


    /opt/ros/indigo/share/python_qt_binding/cmake/shiboken_helper.cmake:41 处的 CMake 警告(消息):
      Shiboken 绑定生成器不可用。
    调用堆栈(最近的调用在前):
      src/qt_gui_cpp_shiboken/CMakeLists.txt:41(包含)


    -- Found PythonInterp: /usr/bin/python2(找到合适的版本“2.7.12”,最低要求是“2.7”)
    -- 可用的 SIP 绑定生成器。
    -- Python 绑定生成器:sip
    -- 配置完成
    -- 生成完成
    -- 构建文件已写入:/home/hiago/packages/qt_gui_core-release-release-indigo-qt_gui_cpp-0.2.30-0/src/build
    [ 7%] 构建 CXX 对象 src/qt_gui_cpp/CMakeFiles/qt_gui_cpp.dir/recursive_plugin_provider.cpp.o
    [ 14%] 构建 CXX 对象 src/qt_gui_cpp/CMakeFiles/qt_gui_cpp.dir/settings.cpp.o
    [ 21%] 构建 CXX 对象 src/qt_gui_cpp/CMakeFiles/qt_gui_cpp.dir/__/__/include/qt_gui_cpp/moc_plugin_bridge.cxx.o
    [ 28%] 链接 CXX 共享库 ../../devel/lib/libqt_gui_cpp.so
    [ 78%] 构建目标 qt_gui_cpp
    扫描目标库的依赖qt_gui_cpp_sip
    [ 85%] 运行 qt_gui_cpp_sip Python 绑定的 SIP 生成器...
    追溯(最近一次通话):
      文件“/opt/ros/indigo/share/python_qt_binding/cmake/sip_configure.py”,第 50 行,在
        配置=配置()
      文件“/opt/ros/indigo/share/python_qt_binding/cmake/sip_configure.py”,第 19 行,在 __init__
        ['qmake', '-query'], env=env, universal_newlines=True)
      文件“/usr/lib/python2.7/subprocess.py”,第 567 行,在 check_output 中
        process = Popen(stdout=PIPE, *popenargs, **kwargs)
      文件“/usr/lib/python2.7/subprocess.py”,第 711 行,在 __init__ 中
        读错,写错)
      文件“/usr/lib/python2.7/subprocess.py”,第 1343 行,在 _execute_child 中
        提高 child_exception
    OSError: [Errno 2] 没有那个文件或目录
    make[2]: *** [src/qt_gui_cpp_sip/CMakeFiles/libqt_gui_cpp_s`在此处输入代码`ip.dir/build.make:90: sip/qt_gui_cpp_sip/Makefile] 错误 1
    make[1]: *** [CMakeFiles/Makefile2:375: src/qt_gui_cpp_sip/CMakeFiles/libqt_gui_cpp_sip.dir/all] 错误 2
    make: *** [Makefile:128: all] 错误 2
    ==> 错误:build() 中发生故障。
        中止...

有什么想法吗?

如果我没有提供足够的信息,请告诉我,以便我提供任何需要帮助解决它的问题。

不知道去哪里了

就像一个 war 经历了一场艰苦而流血的战斗后回家的人 war,我很高兴地说我可以解决它!

在安装软件包 ros-indigo-qt-gui-cpp.[=18= 之前,您应该先安装 qt5-base ]

这样,当您尝试安装它时,您可能会遇到以下问题:

Getting fatal error: QWidget: No such file or directory

#include <QWidget>

为了解决这个问题,我做了:

vim /yourpath/packages/qt_gui_core-release-release-indigo-qt_gui_cpp-0.2.30-0/src/qt_gui_core-release-release-indigo-qt_gui_cpp-0.2.30-0/src/qt_gui_cpp_sip/../../include/qt_gui_cpp/plugin_context.h

然后更改:

#include <QWidget>

作者:

#include <QtGui>

那么你这次可能会遇到另一个问题[1],关于 qmake 的版本,即 运行。

which qmake 会告诉你哪个 qmake 在你的路径中。

您必须确保您使用的是 qmake for qt4。

所以最后的变化是:

sudo mv /usr/bin/qmake /usr/bin/qmake.bk
sudo ln -s /usr/bin/qmake-qt4 /usr/bin/qmake

请注意,命令可能会根据您的环境设置而改变,例如,如果您使用的是 anaconda

(如果需要,请确保稍后恢复这些更改。)

毕竟一切都会好的:D

他们不在这里,但也感谢 AUR 用户:D

[1]