目录
前言
下载Buildroot
如何添加qtwebengine
开始make编译
编译过程中到了这些问题
前言
问题的开始就在于学习QT的过程中遇到了一个问题…
Unknown module(s) in QT: webenginewidgets
我想要把qt的一个项目编译并发送到我的开发板上,但是qmake识别不到这个模块。
由于我是在Ubuntu的环境下操作的,所以网上关于这个问题的资料比较少,大部分只能用做参考,对于初学者来说还是挺难受的,为了解决这个问题卡了我不少的时间…
胡乱用了许多方法无果,最终想buildroot配置,把qtwebengine这个模块添加进去,最后烧写到开发板上。
可惜最终还是未能彻底解决,这里把部分问题的解决过程贴出来,后续问题希望能有大神能不吝赐教。
下载Buildroot
这里我选择的是Buildroot-2022.2.3版本。
官网地址:https://buildroot.org/
找到我们的tar包,如果你想选择其他版本也是可以的,但是配置的步骤可能跟我的不太一样,不过解决问题的思路是一致的,可以看着参照一下。
Tips:如果下载的太慢,可以复制下载链接到其他下载器,这样会快很多。
拷贝到Ubuntu的家目录下,并解压
tar xf buildroot-2022.02.3.tar.gz
如何添加qtwebengine
由于我是按照正点原子教程配置的,所以这里我只讲怎么添加qtwebengine模块,其他配置大家按自己的需求来选,如果实在不会的话看这个:【正点原子MP157连载】第十九章 Buildroot根文件系统构建-摘自【正点原子】STM32MP1嵌入式Linux驱动开发指南V1.7
进入到buildroot目录下
这里我是编译过的,所以多了一个output的文件,刚下载完的目录是没有的,所以不用担心。
首先下载显示图形菜单所需要的库
sudo apt-get install libncurses5-dev
打开配置菜单
make menuconfig
简单说明一下:
用我们键盘上的↑↓←→键来操控光标,回车键选择下方的五个操作,图中尾巴里有个箭头的就是目录,目录里面某个选项前 [ ] 表示未选中,**[ * ]**表示选中,按键盘上的 **“Y”选中、“N”**取消选中,详情看图上面那几行英文。
进入到Target packages目录中:
Target packages —>
Graphic libraries and applications(graphic/text) —>
[ * ] Qt5 —>
[ *] qt5webengine
[ *] proprietary codecs
选择这俩就可以了。
当然没有这么简单,实际情况应该是…
我们选中不了qt5webengine,这里提示说明了这个模块所需要的配置和依赖
先退回到上一个目录,找到mesa3d,进入并选中两个OpenGL
Target packages —>
Graphic libraries and applications(graphic/text) —>
[ * ] mesa3d —>
[ * ] OpenGL EGL
[ * ] OpenGL ES
退回到初始目录,进入Toolchain
Toolchain —>
C library (glibc) —>
(X) glibc
再退回到初始目录,进入System configuration,打开**/dev management**选择最后一项
System configuration —>
/dev management —>
(X) Dynamic using devtempfs + eudev
都搞定后回到Qt5的目录下看看,这下可以选择qt5webengine模块了!
保存Save,退出
开始make编译
编译需要占用的内存比较多,看一下自己的内存是否充足
free -h
为避免出现不必要的麻烦,我建议编译前增加一下自己的交换分区,跟着这篇文章做一遍:在make编译时,出现C++: fatal error:已杀死 signal terminated program cc1plus,解决办法
再查看一下分区的情况
df -h
我之前预留了10G都不够,导致开不了机,最后只能删掉编译的文件重新来过了…
Ubuntu空间不足,如何扩容(超详细讲解)
准备工作做好后开始编译
sudo make
…
花了我一晚上的时间终于!
呵呵,还是没能成功,编译日志如下:
编译中断:ninja: build stopped: subcommand failed.
这个问题我找不到有效的解决办法,这一篇情况跟我很像:Unable to build dev-qt/qtwebengine-5.15.2_p20210224 (SOLVED)
此时我的内存使用情况:
等我找到解决办法再更新吧,哎…
编译过程中遇到了这些问题
1.WARNING: unmet direct dependencies detected for BR2_PACKAGE_HOST_NODEJS
上述警告表明我们缺少BR2_PACKAGE_HOST_NODEJS
只需要选择相应的PACKAGE包就可以了。
我们先清除make产生的文件,再进入配置
sudo make cleanmake menuconfig
进入图形化配置界面后按键盘上的**“ / ”进入搜索,把BR2_PACKAGE_HOST_NODEJS**复制上去,得到如下结果
名称:host nodejs
位置:Host utilities
Host utilities —>
-*- host nodejs
如果你的编译器低于8的话会提示host nodejs needs a host gcc >= 8
退出,安装版本大于等于8的编译器:如何在 Ubuntu 18.04 上升级 gcc 到 9.4:一步步详细指南
2.Your Buildroot configuration needs a compiler capable of building 32 bits binaries.
If you’re running a Debian/Ubuntu distribution, install the g+±multilib package.
For other distributions, refer to their documentation.
support/dependencies/dependencies.mk:27: recipe for target ‘dependencies’ failed
make: *** [dependencies] Error 1
这个问题就是缺少g+±multilib,下载完gcc-9和g+±9后执行如下命令
sudo apt install g++-9-multilib gcc-9-multilib
然后继续make
sudo make