banner
NEWS LETTER

嵌入式 Linux 系列 31:C、C++、Go、Rust 的语言选型

Scroll down

嵌入式 Linux 不等于只能写 C。驱动和底层库仍以 C 为主,但业务服务、网络通信、配置管理、升级程序可以根据资源和团队能力选择 C++、Go 或 Rust。语言选型要看约束,不要只看偏好。

一、C

适合:

  • 驱动。
  • 底层库。
  • 小型系统服务。
  • 资源非常紧张的设备。

优点:

  • 运行时轻。
  • 工具链成熟。
  • 和系统接口贴近。

缺点:

  • 内存安全靠人。
  • 工程规模大后维护成本高。

二、C++

适合:

  • 稍复杂的业务服务。
  • 需要抽象但仍关注性能。
  • 已有 C++ 团队。

注意:

  • 控制异常使用。
  • 控制 RTTI。
  • 控制动态分配。
  • 明确 STL 使用边界。

C++ 可以提高表达力,但要有编码规范。

三、Go

适合:

  • 网关类设备。
  • 网络服务。
  • MQTT/HTTP 较多的业务。
  • 资源相对充足的 Linux 设备。

优点:

  • 并发和网络开发效率高。
  • 部署简单。

缺点:

  • 二进制较大。
  • 运行时占用较高。
  • 交叉编译和 cgo 要注意。

四、Rust

适合:

  • 需要内存安全的系统服务。
  • 新项目。
  • 团队能接受学习成本。

优点:

  • 内存安全。
  • 性能好。
  • 适合长期维护。

缺点:

  • 生态和交叉编译要提前验证。
  • 学习曲线较高。
  • 和 C 库集成需要 FFI。

五、选型建议

资源很小:

1
C

底层驱动和系统接口:

1
C

复杂业务服务:

1
C++ / Go / Rust

团队已有经验优先。语言选型不是炫技,能稳定交付、方便维护、适合设备资源才是关键。

六、验收点

选语言前先验证:

  • 交叉编译是否顺畅。
  • 运行时大小。
  • 内存占用。
  • 启动时间。
  • 日志和崩溃排查方式。
  • 和 C 库集成。
  • OTA 后兼容性。

先做最小原型,再决定是否用于产品。

其他文章
目录导航 置顶
  1. 1. 一、C
  2. 2. 二、C++
  3. 3. 三、Go
  4. 4. 四、Rust
  5. 5. 五、选型建议
  6. 6. 六、验收点
请输入关键词进行搜索