Linux应用开发
# Linux 应用开发
基于 Qt/QML 技术栈的嵌入式 GUI 应用开发全链路——从 QML 声明式 UI 到 C++ 核心库,再到 Linux 部署运维。
# 专栏定位
目标读者:嵌入式 C++ 开发者 / 工业 HMI 开发者 / 从桌面转向嵌入式的 Qt 工程师
技术栈: C++ × Qt 6.x × QML × CMake × Linux
产出能力:能独立开发、部署、优化运行在 ARM Linux 上的 Qt 图形应用
# 学习路线图
模块 1:QML 声明式 UI 开发(14 篇) ← 从零写出嵌入式屏幕上的 UI
↓
模块 2:QT 核心库实践(10 篇) ← 用 C++ 驱动底层能力
↓
模块 3:Linux 系统编程基础(10 篇) ← 嵌入式开发的底座:系统调用/进程线程/IPC/内存
↓
模块 4:CMake 工程化实践(6 篇) ← 交叉编译/依赖管理/CI/CD(📝 规划中)
↓
模块 5:嵌入式部署与运维(9 篇) ← OTA/守护/systemd/安全(📝 规划中)
↓
模块 6:综合项目实战(4 篇) ← 车载仪表/智能家居/工业HMI 三大实战
# 篇目总览
# 模块 1:QML 声明式 UI 开发
| # | 名称 | 核心内容 |
|---|---|---|
| 01 | 嵌入式GUI技术全景 (opens new window) | Qt 架构概览 / 嵌入式GUI选型 / 第一个程序 |
| 02 | QML引擎与渲染原理 (opens new window) | QQmlEngine / Scene Graph 渲染管线 / 批处理 / 双线程模型 |
| 03 | QML语法与类型系统 (opens new window) | QML 类型系统 / 属性-信号-方法 / JavaScript 集成 |
| 04 | 属性绑定与响应式 (opens new window) | 属性绑定原理 / 依赖图 / Binding / Connections |
| 05 | 可视元素与布局原理 (opens new window) | Item / Rectangle / Text / Image / 锚布局 / 定位器 / Grid |
| 06 | 事件处理与传播机制 (opens new window) | 鼠标 / 键盘 / 触摸事件 / 事件传播 / 手势 |
| 07 | 模型视图架构原理 (opens new window) | ListModel / ObjectModel / ListView / GridView / C++ Model |
| 08 | 动画与状态机原理 (opens new window) | 动画系统 / 状态机 / Transition / 缓动曲线 |
| 09 | Canvas与自定义渲染 (opens new window) | Canvas 2D API / 路径绘制 / 数据可视化 / 自定义绘制 |
| 10 | QML与C++集成原理 (opens new window) | 上下文属性 / 类型注册 / 信号槽跨语言通信 |
| 11 | 自定义SceneGraph节点 (opens new window) | QSGNode / 自定义材质 / 着色器 / 渲染优化 |
# 模块 2:QT 核心库实践
| # | 名称 | 核心内容 |
|---|---|---|
| 01 | 核心功能基础 (opens new window) | QObject 模型 / 元对象系统(MOC) / Q_PROPERTY / 对象树 |
| 02 | 并发与多线程 (opens new window) | QThread / moveToThread / QMutex-QSemaphore / QtConcurrent |
| 03 | 文件与IO系统 (opens new window) | QFile-QDir / 文本流 / 内存映射 / 文件监听 |
| 04 | 日期与时间处理 (opens new window) | QDateTime / 格式化 / 时区 / 定时器 |
| 05 | 网络与序列化 (opens new window) | TCP/UDP Socket / HTTP / JSON/XML 序列化 |
| 06 | QT事件系统 (opens new window) | 事件循环 / 事件过滤器 / 自定义事件 / 发送与传播 |
| 07 | 信号与槽机制 (opens new window) | connect 五种语法 / Lambda 槽 / 跨线程信号 / 阻塞信号 |
| 08 | 多媒体的应用 (opens new window) | QMediaPlayer / 音频播放 / 视频渲染 |
| 09 | 容器类和算法 (opens new window) | QList-QMap-QHash / 隐式共享 / Qt 算法库 / STL 对比 |
| 10 | 高级编程技巧 (opens new window) | 智能指针 / 设计模式 / 单元测试 / 调试技巧 |
# 模块 3:Linux 系统编程基础(🆕 10 篇)
| # | 名称 | 核心内容 |
|---|---|---|
| 01 | 系统调用原理精讲 (opens new window) | 用户态/内核态切换、系统调用开销、POSIX标准、glibc、man手册体系 |
| 02 | 文件IO深度解析 (opens new window) | open/read/write/lseek、文件描述符、O_DIRECT/O_SYNC、零拷贝sendfile/splice |
| 03 | 进程管理深度解析 (opens new window) | fork/vfork/clone、exec家族、僵尸/孤儿进程、waitpid、进程组/会话/守护进程 |
| 04 | 线程并发深度解读 (opens new window) | pthread_create、互斥锁/条件变量/读写锁/自旋锁、线程局部存储(TLS)、线程池 |
| 05 | 信号处理深度解读 (opens new window) | 信号生命周期(产生→递达→处理)、sigaction、信号屏蔽字、SIGPIPE/SIGCHLD实战、signalfd |
| 06 | 进程间通信IPC (opens new window) | pipe/FIFO、System V IPC(消息队列/共享内存/信号量)、Unix Domain Socket、mmap共享 |
| 07 | 网络IO多路复用 (opens new window) | socket API、TCP状态机、I/O多路复用(select/poll/epoll)、Reactor模式、tcpdump分析 |
| 08 | 内存管理深度解读 (opens new window) | 虚拟地址空间布局(/proc/pid/maps)、malloc原理(brk/mmap)、valgrind/ASan检测、内存碎片 |
| 09 | 动态链接与共享库 (opens new window) | ELF结构、符号解析、LD_PRELOAD、dlopen/dlsym、RPATH/RUNPATH陷阱、静/动态链接权衡 |
| 10 | Linux与定时器 (opens new window) | CLOCK_MONOTONIC vs CLOCK_REALTIME、timerfd、高精度定时器、NTP跳变防护 |
# 模块 4:CMake 工程化实践(📝 规划中 6 篇)
| # | 名称 | 核心内容 |
|---|---|---|
| 01 | CMake现代核心语法 | target-based设计、PUBLIC/PRIVATE/INTERFACE、generator expressions、3.20+新特性 |
| 02 | 交叉编译工具链全解 | toolchain file编写、sysroot概念、Yocto SDK集成、多ABI(armv7/aarch64)、QEMU仿真测试 |
| 03 | 依赖管理与包分发 | find_package、FetchContent/CPM、vcpkg/conan集成、自建预编译仓库、版本锁定 |
| 04 | 代码质量与静态分析 | clang-tidy/clang-format、AddressSanitizer/UBSan/TSan、LCOV覆盖率、CTest单元测试框架 |
| 05 | 编译优化与包体积精简 | LTO(链接时优化)、-Os vs -O2选择、strip符号裁剪、资源压缩、prelink启动加速 |
| 06 | CI/CD与自动化构建 | GitHub Actions/GitLab CI 交叉编译流水线、Docker编译容器、deb/rpm打包、OTA增量包生成 |
# 模块 5:嵌入式部署与运维(📝 规划中 9 篇)
| # | 名称 | 核心内容 |
|---|---|---|
| 01 | 嵌入式Linux部署全览 | 镜像构建(Yocto/Buildroot)、分区布局、init系统选择(systemd vs BusyBox) |
| 02 | systemd服务管理实战 | unit文件编写、依赖关系、cgroup资源限制、journald日志、socket activation |
| 03 | 应用守护与保活策略 | daemon化、systemd watchdog、心跳检测、多级保活链、重启退避算法 |
| 04 | 崩溃捕获与现场保存 | signal handler、core dump配置、backtrace符号化、minidump收集、OOM killer日志 |
| 05 | 日志系统设计 | syslog/journald、应用日志分级、结构化日志(JSON)、logrotate轮转、远程日志上报 |
| 06 | OTA升级方案设计 | A/B分区、增量升级(bsdiff/courgette)、回滚机制、断点续传、版本管理 |
| 07 | 资源监控与调优 | CPU/内存/IO/网络监控(top/proc/netstat)、cgroup限制、perf火焰图、启动时间优化 |
| 08 | 安全加固实践 | 最小权限、capabilities、seccomp沙箱、SELinux/AppArmor、磁盘加密、安全启动 |
| 09 | 真机调试与问题定位 | gdbserver远程调试、strace动态追踪、core dump交叉分析、eBPF/bpftrace探针 |
# 模块 6:综合项目实战(🆕 4 篇)
| # | 名称 | 核心内容 |
|---|---|---|
| 01 | 深入项目架构设计 (opens new window) | 需求分析→模块拆分→技术选型→目录规划、多进程 vs 多线程架构决策 |
| 02 | 车载仪表盘项目实战 (opens new window) | QML仪表UI、CAN总线数据接入、实时渲染优化、冷启动<2秒 |
| 03 | 智能家居控制面板 (opens new window) | 触控交互设计、MQTT协议对接、场景联动逻辑、低功耗Standby模式 |
| 04 | 工业HMI看板实战 (opens new window) | Modbus/OPC UA协议、实时数据曲线、报警管理、多语言/多分辨率适配 |
# 技术栈地图
┌──────────────┐
│ QML Layer │ 声明式 UI / 动画 / 组件
└──────┬───────┘
┌──────┴───────┐
│ C++ Layer │ Qt Core / Network / Thread
└──────┬───────┘
┌──────┴───────┐
│ Linux Layer │ 进程管理 / 守护 / 日志
└──────┬───────┘
┌──────┴───────┐
│ Hardware Layer│ ARM SoC / framebuffer / 触摸屏
└──────────────┘
上次更新: 2026/07/12, 19:39:51