ubuntu18.04 x86下编译完整版qt5.15.14_armhf

1、下载目标armhf的img镜像,我选的是firefly的rk3288的rootfs镜像:
rk3288_ubuntu_18.04_armhf_ext4_v2.04_20201125-1538_DESKTOP.img
2、修改该镜像文件大小(方便后面编译操作)

apt install qemu
qemu-img resize rk3288_ubuntu_18.04_armhf_ext4_v2.04_20201125-1538_DESKTOP.img +20G
e2fsck -f rk3288_ubuntu_18.04_armhf_ext4_v2.04_20201125-1538_DESKTOP.img
resize2fs rk3288_ubuntu_18.04_armhf_ext4_v2.04_20201125-1538_DESKTOP.img

3、挂载镜像

mkdir rootfs
mount rk3288_ubuntu_18.04_armhf_ext4_v2.04_20201125-1538_DESKTOP.img rootfs/

4、安装环境

sudo apt-get install qemu-user-static -y
cp /usr/bin/qemu-arm-static rootfs/usr/bin/
echo 'nameserver 114.114.114.114' >> rootfs/etc/resolv.conf
echo 'nameserver 8.8.8.8' >> rootfs/etc/resolv.conf
echo 'DNS=114.114.114.114 8.8.8.8' >> rootfs/etc/systemd/resolved.conf

5、chroot切换到rootfs,推荐使用脚本 mount.sh

#!/bin/bash
mnt() {
	echo "MOUNTING"
	sudo mount -t proc /proc ${2}proc
	sudo mount -t sysfs /sys ${2}sys
	sudo mount -o bind /dev ${2}dev
	sudo mount -o bind /dev/pts ${2}dev/pts
	sudo chroot ${2}
}
umnt() {
	echo "UNMOUNTING"
	sudo umount ${2}proc
	sudo umount ${2}sys
	sudo umount ${2}dev/pts
	sudo umount ${2}dev
}
 
if [ "$1" == "-m" ] && [ -n "$2" ] ;
then
	mnt $1 $2
elif [ "$1" == "-u" ] && [ -n "$2" ];
then
	umnt $1 $2
else
	echo ""
	echo "Either 1'st, 2'nd or both parameters were missing"
	echo ""
	echo "1'st parameter can be one of these: -m(mount) OR -u(umount)"
	echo "2'nd parameter is the full path of rootfs directory(with trailing '/')"
	echo ""
	echo "For example: ch-mount -m /media/sdcard/"
	echo ""
	echo 1st parameter : ${1}
	echo 2nd parameter : ${2}
fi

6、解压源码到rootfs

tar -xf /opt/qt-everywhere-opensource-src-5.15.14.tar.xz -C rootfs/opt/

7、执行mount.sh切换到镜像内

bash ./mount.sh -m rootfs/

8、安装环境

mkdir /tmp
chmod 777 /tmp
apt update
apt-get -y install libgl1-mesa-dev libglu1-mesa-dev
apt-get -y install libxkbcommon-x11-dev
apt-get -y install libxkbcommon-x11-dev
apt-get -y install libxcb-xinerama0-dev 
apt-get -y install '^libxcb.*-dev' libx11-xcb-dev libglu1-mesa-dev libxrender-dev libxi-dev libxkbcommon-dev libxkbcommon-x11-dev
apt-get -y install build-essential
apt-get -y install libgl1-mesa-dev
apt-get -y install libglu1-mesa-dev
apt-get -y install libegl1-mesa-dev
apt-get -y install freeglut3-dev
apt-get -y install flex bison gperf libicu-dev libxslt-dev ruby
apt-get -y 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
apt-get -y install libasound2-dev libgstreamer0.10-dev libgstreamer-plugins-base0.10-dev
apt-get -y install libasound2-dev libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev
apt-get -y install libclang-6.0-dev llvm-6.0
apt-get -y install bluez
apt-get -y install libbluetooth-dev
apt-get -y install nodejs
apt-get -y install libxcb*
apt-get -y install default-libmysqld-dev default-libmysqlclient-dev
apt-get -y install libsqlite*
apt-get -y install libxkbfile*

9、编译

cd /opt/qt-everywhere-src-5.15.14/
mkdir -p /opt/Qt/5.15.14_armhf
./configure -prefix /opt/Qt/5.15.14_armhf -release -opensource  -confirm-license -nomake examples -nomake tests -recheck-all 
make -j64 && make install
echo $?
sync

10、ctrl+d退出chroot,然后执行取消挂载命令

bash mount.sh -u rootfs/

11、压缩5.15.14_armhf 打包后的文件

tar -jcvf qt5.15.14_armhf_all.tar.bz  rootfs/opt/Qt/5.15.14_armhf/

12、卸载img镜像挂载

umount rootfs
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值