本文记录一次在 ARM64 Linux 环境下编译最新版 Beta 版 Telegram Desktop(Qt 版本)的过程与踩坑情况。
编译日期为 2026 年 5 月 24 日,目标平台为 ARM64 Debian Linux,目标产物为可独立运行的 Telegram Desktop 二进制。
编译版本为:
- Telegram Desktop
- Qt 桌面版本
- ARM64 / AArch64 Linux
- 编译目标:Debian Linux
- 最终运行环境测试:postmarketOS 中的 Debian Docker 桌面环境
一、实际使用的硬件配置
本次编译使用的是 ARM64 云服务器,具体配置如下:
| 项目 | 配置 |
|---|---|
| CPU | 4 核 ARM64 |
| RAM | 16GB |
| 磁盘 | 100GB |
| Swap | 额外 6GB |
| 系统 | Debian Linux |
虽然最终成功完成编译,但整体资源其实比较紧张。
其中最主要的问题来自:
- 内存不足
- 磁盘空间不足
二、编译过程中遇到的资源问题
1. RAM 不足
16GB RAM 实际上只能算“勉强够用”。
为了避免:
- Docker 编译阶段 OOM
- 链接阶段崩溃
- prepare 阶段内存耗尽
最终额外开启了约 6GB 的交换内存(Swap)。
整体上:
- 16GB RAM + 6GB Swap 可以完成编译
- 但已经属于“边缘成功”
如果不增加 Swap,很容易在编译后期失败。
2. 磁盘空间不足
磁盘空间压力比预期更大。
在:
- 操作系统
- Docker 镜像
- 编译缓存
- 源代码
- 中间构建产物
- Swap 文件
全部占用之后,100GB 磁盘几乎被吃满。
期间还额外进行了:
- Docker 构建缓存清理
释放了大约 8GB 以上空间。
即便如此,在编译峰值阶段,磁盘剩余空间依然只有约 5GB。
因此:
100GB 虽然理论上能完成,但已经非常极限。
三、推荐硬件配置
结合这次实际经验,更推荐如下配置。
最低可用配置(成本优先)
| 项目 | 推荐 |
|---|---|
| CPU | 4 核 ARM64 |
| RAM | 16GB |
| Swap | 5~10GB |
| 磁盘 | ≥120GB |
这是“可以稳定完成编译”的最低推荐方案。
但前提是:
- 关闭 LTO
- 注意缓存清理
- 避免后台额外占用资源
更理想的配置(推荐)
| 项目 | 推荐 |
|---|---|
| CPU | 4~8 核 ARM64 |
| RAM | 24GB 或更高 |
| 磁盘 | 200GB |
这种配置下:
- 不需要频繁清理缓存
- 可以保留 LTO
- Docker 空间压力明显降低
- 链接阶段更稳定
整体体验会好很多。
四、编译耗时
prepare 阶段
prepare 脚本阶段耗时较长。
主要是:
- 拉取依赖
- 编译第三方库
- Docker 构建环境准备
大约需要:
- 1 小时以上
Telegram 本体编译阶段
后续 Docker 内真正编译 Telegram Desktop:
- 也需要约 1 小时以上
因此整体耗时:
- 大约 2~3 小时
相比之前编译:
- Windows x86 版本
- macOS 版本
这次 ARM64 Linux 的编译速度反而略快一些。
五、做过的源码与编译配置调整
本次实际上只修改了两处内容。
1. 关闭 LTO
为了节约:
- 磁盘空间
- 链接阶段资源消耗
关闭了:
- LTO(Link Time Optimization)
这是这次能够在 100GB 磁盘内成功完成编译的重要原因之一。
如果开启 LTO:
- 磁盘占用会进一步增加
- 链接阶段 RAM 压力也会更高
因此在资源有限时,关闭 LTO 是比较现实的方案。
当然:
如果硬件资源充足,仍然推荐开启 LTO。
2. 修复 RNNoise 在 ARM 上的编译问题
编译过程中唯一真正涉及源码的问题,是:
- RNNoise 库默认 checkout 的版本
- 在 ARM64 上无法正常编译
默认脚本会 checkout 到一个固定 tag(印象中类似:
- v0.2
- 或 v2.x
具体版本号已经记不太清)。
但该版本在 ARM 平台上存在问题。
最终处理方式是:
- 去掉 checkout 的 tag/版本限制
- 直接使用主分支(master/main)
之后即可正常完成编译。
除了这一处之外:
- Telegram 本身源码
- 编译配置
都没有出现明显问题。
后续遇到的失败基本全部来自:
- RAM 不足
- 磁盘不足
而不是代码本身的问题。
六、最终编译产物
最终成功生成 ARM64 Linux 下的 Telegram Desktop 二进制。
通过 file 命令查看:
- 为 ARM64 ELF 可执行文件
- 动态链接
- AArch64 架构
初始生成的二进制体积约:
- 6GB+
这是因为:
- 保留了完整 debug 信息
之后通过:
strip
去除无用调试信息后:
- 最终大小约为 100MB~150MB
这个体积就比较正常了。
七、运行测试结果
最终产物已经测试运行于:
- postmarketOS
- Debian Docker 桌面环境
运行情况良好。
目前观察到:
- 启动正常
- UI 正常
- 功能正常
- 未发现明显 ARM64 兼容性问题
整体运行效果相当不错。
八、总结
这次 ARM64 Linux 编译 Telegram Desktop 的过程整体上比预期顺利。
真正困难的部分并不是:
- 源代码
- 编译系统
而是:
- 内存
- 磁盘空间
在关闭 LTO、增加 Swap、清理 Docker 缓存之后:
- 16GB RAM
- 100GB 磁盘
也可以勉强完成编译。
但如果想获得更稳定、更轻松的体验:
- 24GB+ RAM
- 200GB 磁盘
依然是更加推荐的配置。