文章目录
前言
由于供应商提供的qt库不支持OpenGL,虽说用QML编译出来的程序也能运行,但是效果非常卡,供应商要我们换3588,但是我认为3568运行一个简单的QML绝不应该卡成PPT,随后做上位机界面的同事发现编译时会报无OpenGL的错,所以我们怀疑是由于没有调用OpenGL库的原因导致的,所以决定自己下QT源码重新编译一个带OpenGL的套件。
在网上查阅了大量文章,参照很多文档开始编译,在qt源码config阶段各种报错,由于这些文章都只讲了要这么做,而未说明为什么要这么做,所以一直编译不成功,折腾了两天之后,最终参照国外一树莓派的固件制作视频1,终于是摸清楚了各环节的作用,特此写文章记录一下,很多地方是自己的理解,有理解的不对的地方,也希望大佬们指正。
一、准备工作
想要成功交叉编译,自然是要做一些准备工作,我在这里简单说一下,有些网上一查一大把的,我就不细说了。
- 准备交叉编译器,RK3568使用的是aarch64-linux-gnu编译器,可以去linaro官网下。这个一般供应商也会提供。
下载地址是:https://releases.linaro.org/components/toolchain/binaries/latest-7/aarch64-linux-gnu/ - 下载QT源码,我使用的是QT5.14.2,其他应该也大差不差。
- 准备虚拟机,我用的是ubuntu18.04,虚拟机网络配置,能ping通开发板,这个应该都能做到。
二、开发板准备工作
应该是qt编译OpenGL时,需要用到开发板的库,这也是最开始不明白为什么很多带OpenGL的qt交叉编译的文章里都会提到sysroot,sysroot的作用应该就是在虚拟机里实现开发板的环境。
废话少说,开发板联网,安装以下库(由于我是root用户登录的开发板,所以就没有加sudo了):
apt-get update
apt-get upgrade
apt-get build-dep qt5-qmake
apt-get install libudev-dev libinput-dev libts-dev libmtdev-dev libjpeg-dev libfontconfig1-dev
apt-get install libssl-dev libdbus-1-dev libglib2.0-dev libxkbcommon-dev libegl1-mesa-dev libgbm-dev libgles2-mesa-dev mesa-common-dev
apt-get install libvpx-dev libsnappy-dev libnss3-dev
apt-get install "^libxcb.*"
apt-get install libfreetype6-dev libicu-dev libsqlite3-dev libxslt1-dev libavcodec-dev libavformat-dev libswscale-dev
apt-get install gstreamer-tools libx11-dev libglib2.0-dev
apt-get install libx11-dev libglib2.0-dev
apt-get install freetds-dev libpq-dev libiodbc2-dev firebird-dev libgst-dev libxext-dev libxcb1 libxcb1-dev libx11-xcb1
apt-get install libxcb-sync1 libxcb-sync-dev libxcb-render-util0 libxcb-render-util0-dev libxcb-xfixes0-dev libxrender-dev libxcb-shape0-dev libxcb-randr0-dev
apt-get install libxcb-glx0-dev libxi-dev libdrm-dev libssl-dev libxcb-xinerama0 libxcb-xinerama0-dev
apt-get install libatspi-dev libssl-dev libxcursor-dev libxcomposite-dev libxdamage-dev libfontconfig1-dev
apt-get install libssl-dev libxcursor-dev libxcomposite-dev libxdamage-dev libfontconfig1-dev
apt-get install libxss-dev libxtst-dev libpci-dev libcap-dev libxrandr-dev libnss3-dev libdirectfb-dev libaudio-dev
a
以上库我是照搬那个视频里的,具体哪些不需要的,我也没有细究,有兴趣的同学可以具体研究研究。
三、虚拟机准备工作
3.1 虚拟机里也要安装以下环境
sudo apt-get update
sudo apt-get upgrade -y
sudo apt-get install gcc git bison python gperf pkg-config
sudo apt-get install libclang-dev
sudo apt-get install mesa-common-dev