如何使用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可以供大家参考。DockerfileFROM docker.1panel.live/library/ubuntu:22.04 ENV DEBIAN_FRONTENDnoninteractive # 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连接DockerDocker环境配完了下一步就是如何把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 21