【问题标题】:Problems during compilation of ros-indigo-qt-gui-cpp in Arch Linux ARMArch Linux ARM编译ros-indigo-qt-gui-cpp时出现的问题
【发布时间】:2017-03-28 08:52:00
【问题描述】:

我正在使用带有 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 -- Found 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 shiboken-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(包括) -- 找到 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 扫描目标 libqt_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 中 进程 = Popen(stdout=PIPE, *popenargs, **kwargs) __init__ 中的文件“/usr/lib/python2.7/subprocess.py”,第 711 行 读错,写错) _execute_child 中的文件“/usr/lib/python2.7/subprocess.py”,第 1343 行 引发 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 ==> 错误:构建()中发生故障。 中止...

有什么想法吗?

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

我不知道该去哪里。

【问题讨论】:

  • 您是否尝试过实际安装 shiboken(不管是什么?)
  • 是的,安装它是徒劳的。实际上,Shiboken 似乎被故意禁用了github.com/ros-visualization/rviz/issues/728
  • 当我回答我自己的问题时,将我自己的答案标记为最佳答案是正确的还是违反了规则?
  • @EmersonOliveira。是的,可以接受你自己的答案。
  • 谢谢,我相信我的回答有一天会对许多其他用户有所帮助。

标签: python c++ linux qt ros


【解决方案1】:

就像一个战士在一场艰苦而流血的战斗后回家一样,我很高兴我能解决它!

你应该在安装 ros-indigo-qt-gui-cpp 包之前安装 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 在你的路径中。

你必须确保你使用的是 qt4 的 qmake。

所以最后的变化是:

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

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

(请确保稍后恢复这些更改。)

一切都应该没问题:D

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

[1]error: no matching function for call to ‘sipqt_gui_cpp_RosPluginlibPluginProvider_ForPlugins::connectNotify(const char*&)’

【讨论】:

    最近更新 更多