如何使用Docker交叉编译Qt Linux包
·
大家好,这里Aaron。最近在和荣耀做音频易Studio的适配工作遇到了一个需求,需要基于Ubuntu 22.04版本编译软件的ARM64 deb包。我的软件是基于开源Qt的产品,刚开始也是想都没想去VMWare装了个Ubuntu 26.04版本,编译出来反馈Ubuntu版本太高需要降版本。搜遍Ubuntu官网只找到ARM的服务器版本22.04,这个时候去翻了一下Docker发现有22.04镜像,于是利用1panel代理加速把22.04包拉下来了。
启动Docker容器
启动镜像可以通过以下命令直接打开bash命令行:
docker run -it --rm -v "/Users/XXXX/Desktop/Workspace/audioeasestudio:/workspace" -w /workspace audioeasestudio-dev:latest bash
因为Docker容器是无状态的,每次重启镜像都会清空里面的所有依赖,所以自己写了个Dockerfile,可以供大家参考。
Dockerfile
FROM docker.1panel.live/library/ubuntu:22.04
ENV DEBIAN_FRONTEND=noninteractive
# Switch to Tsinghua apt mirror (using http to avoid SSL issues in base image)
RUN sed -i 's|http://ports.ubuntu.com/ubuntu-ports|http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports|g' /etc/apt/sources.list && \
apt-get update && \
apt-get install -y --no-install-recommends \
ca-certificates \
wget \
gnupg \
build-essential \
cmake \
ninja-build \
libgl1-mesa-dev \
libglu1-mesa-dev \
libxkbcommon-x11-dev \
libxcb-cursor-dev \
libxcb-icccm4-dev \
libxcb-image0-dev \
libxcb-keysyms1-dev \
libxcb-randr0-dev \
libxcb-shape0-dev \
libxcb-shm0-dev \
libxcb-sync-dev \
libxcb-util-dev \
libxcb-xfixes0-dev \
libxcb-xinerama0-dev \
libxcb-xkb-dev \
libxcb-dri3-dev \
libx11-xcb-dev \
libxcb-dri2-0-dev \
libxcb-glx0-dev \
libxcb-present-dev \
libxcb-composite0-dev \
libxcb-ewmh-dev \
libxcb-res0-dev \
libfontconfig1-dev \
libfreetype6-dev \
libdbus-1-dev \
libssl-dev \
libpulse-dev \
libasound2-dev \
libjack-jackd2-dev \
libpipewire-0.3-dev \
libsndfile1-dev \
libflac-dev \
libmp3lame-dev \
libvorbis-dev \
libogg-dev \
libopus-dev \
libsamplerate0-dev \
libsqlite3-dev \
libsystemd-dev \
libudev-dev \
libinput-dev \
libts-dev \
libmtdev-dev \
libjpeg-dev \
libpng-dev \
libtiff-dev \
libwebp-dev \
libharfbuzz-dev \
libpcre2-dev \
libdouble-conversion-dev \
libmd4c-dev \
pkg-config \
git \
ccache \
clang \
lld \
llvm \
gdb \
valgrind \
&& \
apt-get install -y --no-install-recommends \
qt6-base-dev \
qt6-base-dev-tools \
qt6-tools-dev \
qt6-tools-dev-tools \
qt6-l10n-tools \
libqt6opengl6-dev \
qt6-multimedia-dev \
libqt6svg6-dev \
qt6-wayland \
libqt6sql6-sqlite \
&& \
apt-get clean && \
rm -rf /var/lib/apt/lists/*
CMD ["/bin/bash"]

配置Qt Creator连接Docker
Docker环境配完了,下一步就是如何把Qt Creator连接上容器。巧的是Qt Creator中有Docker插件,可以通过Qt Creator连接Docker镜像。
步骤1:启用Docker插件
在Qt Creator中,进入 关于插件 搜索 Docker 并勾选,然后点击确定。

步骤2:添加Docker设备
在 首选项 -> 设备 中选择添加 Docker Device,选择自己的Docker容器。
配置完成后选择Docker容器,划到最下面选择 Auto Detect Kit Items 检测容器的qmake。

步骤3:验证配置
如果正常的话这时候在项目选项卡中应该是没有红色感叹号的。如果有,可以在bash中输入以下命令检测qmake是否已安装:
which qmake
如果没有输出,需要重新安装Qt依赖。
步骤4:构建项目
配置完成后直接构建即可构建linux目录。
步骤5:生成DEB包
最后可以通过以下命令生成deb包:
docker run --rm -v "/Users/XXX/Desktop/Workspace/audioeasestudio:/workspace" -w /workspace audioeasestudio-dev:latest bash -c "cd build && cpack -G DEB 2>&1"
更多推荐


所有评论(0)