QtWebEngine 到嵌入式 linux 交叉编译失败
Posted
技术标签:
【中文标题】QtWebEngine 到嵌入式 linux 交叉编译失败【英文标题】:QtWebEngine to embedded linux cross-compilation fails 【发布时间】:2017-05-14 15:57:35 【问题描述】:我正在尝试将我的桌面项目交叉编译为树莓派。我的项目使用 Qt 5.6 和 QtWebEngine。 我遵循了本指南:RaspberryPi2EGLFS 它在没有使用 webengine 的部件的情况下运行,但我无法使用 WebEngine 模块,因为我无法编译它。它给了我这个:
gyp: Undefined variable clang_dir in /Users/aeron/raspi/qtwebengine/src/core/core_generated.gyp
gyp: Undefined variable clang_dir in /Users/aeron/raspi/qtwebengine/src/core/resources/resources.gyp
Project ERROR: -- running gyp_qtwebengine failed --
我已经尝试过手动插入一个空变量,但是这两行只是冰山一角。
当我获取完整的 qt5 存储库并尝试编译它时,我也遇到了这个错误。
更新
我取得了一些进展。通过编辑qtwebengine/src/core/config/embedded_linux.pri
,我设法解决了 clang_dir 问题。我刚刚将行 clang_dir=0
添加到变量列表的末尾。
但还有另一个同类问题:
gyp: Undefined variable c_sources in /Users/aeron/raspi/qtwebengine/src/3rdparty/chromium/third_party/ffmpeg/ffmpeg.gyp
Project ERROR: -- running gyp_qtwebengine failed --
我该如何解决这个问题?或者怎么关闭webengine的ffmpeg部分,反正我也没打算用……
更新 2
现在它认为我解决了 ffmpeg 问题。方式:在src/3rdparty/chromium/third_party/ffmpeg/ffmpeg.gyp
文件中我将use_system_ffmpeg设置为1。
现在我有一个新问题:
Updating projects from gyp files...
gyp: Dependency '/Users/aeron/raspi/qtwebengine/src/3rdparty/chromium/base/base.gyp:symbolize#host' not found while trying to load target /Users/aeron/raspi/qtwebengine/src/3rdparty/chromium/base/base.gyp:base#host
Project ERROR: -- running gyp_qtwebengine failed --
所以它仍然无法编译。
【问题讨论】:
【参考方案1】:可能不是您想听到的,但 Pi 上并未正式支持 QWebEngine。
从 https://doc.qt.io/qt-5/qtwebengine-platform-notes.html#all-platforms
“在 Linux 上,需要 Clang 或 GCC 4.7 或更高版本。支持的配置是 linux-g++ 和 linux-clang。”
但是,我知道一个事实,它可以为 Qt 5.7.1 和 Qt5.8.0 交叉编译(我在 Ubuntu 16 上完成),但前提是您为设备“linux-rasp-pi2-g++”配置” 而不是“linux-rpi3-g++”。它不能为 Qt5.9.0 构建。
请注意,Qt5.8.0 在 Pi 上的 OpenGL 性能很差。 Qt5.7 或 5.9 不存在此问题。
再说一遍 - 无论如何,它对 Pi 来说可能太重了。
【讨论】:
以上是关于QtWebEngine 到嵌入式 linux 交叉编译失败的主要内容,如果未能解决你的问题,请参考以下文章