arm+Ubuntu+Qt5.15.2

内核版本5.10.9

操作系统Ubuntu20.04 focal

环境讯为iTOP-3588

由于要和后端对接,所以需要用Qt中的webengine,但是apt-get下载的版本是5.12.8,对应的chorme内核版本太低,没法加载相关的东西,故对着源码充。

网上虽然好多好多,但是这里记录一下自己 

所需的前置:gcc、g++、make、cmake、meson、ninja

1.安装依赖

sudo apt install build-essential libgl1-mesa-dev libxkbcommon-dev libnss3-dev libdbus-1-dev gperf flex bison
sudo apt-get install '^libxcb.*-dev' libx11-xcb-dev libglu1-mesa-dev libxrender-dev libxi-dev libxkbcommon-dev libxkbcommon-x11-dev

sudo apt install libxcursor-dev libxcomposite-dev libxdamage-dev libxrandr-dev libxtst-dev libxss-dev libdbus-1-dev libevent-dev libfontconfig1-dev libcap-dev libpulse-dev libudev-dev libpci-dev libnss3-dev libasound2-dev libegl1-mesa-dev gperf bison nodejs

sudo apt-get install gperf

sudo apt-get install flex

sudo apt-get install bison

sudo apt install libnss3-dev

sudo apt-get update
sudo apt-get upgrade
sudo apt-get install libxcb-xinerama0-dev
sudo apt-get install build-essential perl python git
sudo apt-get install '^libxcb.*-dev' libx11-xcb-dev libglu1-mesa-dev libxrender-dev libxi-dev libxkbcommon-dev libxkbcommon-x11-dev
sudo apt-get install flex bison gperf libicu-dev libxslt-dev ruby
sudo apt-get install libssl-dev libxcursor-dev libxcomposite-dev libxdamage-dev libxrandr-dev libdbus-1-dev libfontconfig1-dev libcap-dev libxtst-dev libpulse-dev libudev-dev libpci-dev libnss3-dev libasound2-dev libxss-dev libegl1-mesa-dev gperf bison
sudo apt-get install libasound2-dev libgstreamer0.10-dev libgstreamer-plugins-base0.10-dev gst*
sudo apt install libclang-6.0-dev llvm-6.0
sudo apt-get install clang-8
sudo apt-get install clang


apt-get install repo git gcc-arm-linux-gnueabihf u-boot-tools device-tree-compiler mtools \
parted libudev-dev libusb-1.0-0-dev python-linaro-image-tools linaro-image-tools libssl-dev \
autotools-dev libsigsegv2 m4 libdrm-dev curl sed make binutils build-essential gcc g++ bash \
patch gzip bzip2 perl tar cpio python unzip rsync file bc wget libncurses5 libglib2.0-dev \
openssh-client lib32stdc++6 gcc-aarch64-linux-gnu libncurses5-dev lzop libssl1.0.0 libssl-dev \
libglade2-dev cvs mercurial subversion asciidoc w3m dblatex graphviz python-matplotlib \
libc6:i386 texinfo liblz4-tool genext2fs expect autoconf intltool libqt4-dev libgtk2.0-dev

上面好多一坨,直接复制安装就OK,基本上涵盖了webengine serialport multimedia 等,基本上环境就OK。

安装ninja:

(1)安装ninja依赖
sudo apt-get install re2c
(2)编译ninja
cd qt-everywhere-src-5.15.2/qtwebengine/src/3rdparty/ninja
./configure.py --bootstrap
(3)安装
sudo cp ./ninja /usr/bin
ninja --version

这里如果需要编译Qwebengine,里面的第三方插件就有ninja编译的东西,我这里看别人是安装这个,但是ninja在编译Qt的时候自己会编译,这里面可以做但也可以不做,但是ninja依赖必须安装。

2.创建config的shell脚本

创建shell脚本

sudo gedit autoconfig.sh

然后将下面的复制。

#! /bin/bash
./configure \
-prefix /home/admin123/qt5.15.2_ARM \
-opensource \
-confirm-license \
-release \
-strip \
-shared \
-optimized-qmake \
-c++std c++14 \
--rpath=no \
-pch \
-skip qt3d \
-skip qtactiveqt \
-skip qtandroidextras \
-skip qtcanvas3d \
-skip qtconnectivity \
-skip qtdatavis3d \
-skip qtdoc \
-skip qtgamepad \
-skip qtlocation \
-skip qtmacextras \
-skip qtnetworkauth \
-skip qtpurchasing \
-skip qtremoteobjects \
-skip qtscript \
-skip qtscxml \
-skip qtsensors \
-skip qtspeech \
-skip qtsvg \
-skip qttools \
-skip qttranslations \
-skip qtwayland \
-skip qtwinextras \
-skip qtx11extras \
-skip qtxmlpatterns \
-gui \
-widgets \
-dbus-runtime \
-no-openssl \
--freetype=qt \
--harfbuzz=qt \
-linuxfb \
--libpng=system \
--libjpeg=system \
--sqlite=qt \
-plugin-sql-sqlite \
-recheck-all

然后给权限

sudo chmod 777 ./autoconfig.sh

这是我需要的配置,我遇到了libjpeg编译特别慢,而且总是ninja编译出错等,所以我就在本地安装好然后配置系统中的,对应倒是第四行。config的具体参数解释在这里

接下来就是可爱又可恨的检查前置,不过按照上面的走基本问题不大。我自己的config脚本得到的是下图:

如果想重新配置就把源码下面的config.cache删除,然后重新./autoconfig.sh就ok了

缺啥就用apt-get 下载啥一般按照我这个应该不会出错

apt-get install 

3.编译

配置完了,如果没有下面这种WARNING 一般就可以了,下面这个图我是借的这个兄弟的文章里面的图:

Qt5.15.2 Linux ARM架构源码编译安装(UOS20国产系统)_qt打包arm架构程序-CSDN博客

直接补充一下奥,这里可以直接make -j16 但是编译webengine的时候会因为内存不够而中途中断,例如:C++: fatal error: Killed signal terminated program cc1plus

如果不怕麻烦可以自己去点,他退出一次make一次,不过make 就不能-j16了,可以少几个线程,也可以增加swap分区,

sudo dd if=/dev/zero of=/swapfile bs=4G count=1
#count的大小就是增加的swap空间的大小,1G是块大小为1G,所以空间大小是bs*count=6G
sudo mkswap /swapfile
su
chmod 0600 /swapfile  
sudo swapon /swapfile

ok接下来就是编译了。我这边编译除了上述问题基本没出毛病,如果有毛病的给大家推荐一个文章

OK就这样。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值