Ubuntu 下选择 C++ 库的实用指南
一 决策流程
二 常用库与推荐获取方式
| 场景 | 常用库 | 推荐安装方式 | 备注 |
|---|---|---|---|
| 基础与工具 | GCC、G++、build-essential、CMake、GDB | sudo apt install build-essential cmake gdb | 编译器与构建调试基础 |
| 通用增强 | Boost | sudo apt install libboost-all-dev | 大量通用组件(线程、正则、智能指针等) |
| 计算机视觉 | OpenCV | sudo apt install libopencv-dev | 验证:pkg-config --list-all |
| GUI 与桌面 | Qt5(Core/Gui/Widgets) | sudo apt install libqt5core5a libqt5gui5 libqt5widgets5 | 亦可用 Qt6 对应包 |
| 事件驱动 I/O | libevent | 参考官方源码编译安装 | 适合高性能网络/异步事件 |
| 线性代数 | Eigen | sudo apt install libeigen3-dev | 头文件库,模板实现 |
| 非线性优化 | Ceres Solver | 建议源码编译 | 依赖较多,版本匹配重要 |
| 图优化 | g2o | 建议源码编译 | 常用于 SLAM 后端 |
| 点云处理 | PCL | 建议源码编译或与系统版本匹配 | 依赖复杂,注意 VTK/FLANN 版本 |
| 日志 | Boost.Log / spdlog | 视仓库可用性选择 | 生产可用、性能与易用性取舍 |
| 网络 | Boost.Asio / libcurl / ZeroMQ | 优先 APT,必要时 vcpkg/Conan | 同步/异步、REST、消息通信 |
| JSON | nlohmann/json | 头文件库,可直接纳入工程 | 易集成、现代 C++ 接口 |
| 加密 | OpenSSL / libsodium | sudo apt install libssl-dev libsodium-dev | TLS/加解密、易用安全库 |
| 多媒体 | SDL2 / SFML | sudo apt install libsdl2-dev libsfml-dev | 2D 图形/音频/输入跨平台 |
三 安装与版本管理
四 典型场景快速建议