大家好,这里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"