2.5 C++ 使用指南
前言
文档目的
本文档旨在为开发者提供在 SpacemiT RISC-V64 原生机器上进行 C++ 开发的完整使用说明。内容涵盖从开发环境准备、编译与构建方法、常见库的使用,到面向 RISC-V64 平台的性能优化与调试技巧。 本说明文档的目标是:
- 帮助开发者快速搭建并验证 C++ 开发环境;
- 指导开发者在 RISC-V64 平台上正确编译、运行、调试 C++ 程序;
- 提供 RISC-V64 平台相关的编译选项、指令集优化和常见问题解决方案;
- 为后续进行高性能计算、系统编程、AI/机器人开发等提供基础支撑。
适用环境
本说明适用于运行在 SpacemiT RISC-V64 架构处理器 上的原生 Linux 操作系统环境,推荐使 用 ROS2_LXQT 和其他类似发行版:
- ROS2_LXQT (推荐)
- Bianbu RISC-V (24.04 及以上)
- 其他兼容 RISC-V64 的 Linux 发行版(如 Fedora RISC-V、openEuler RISC-V、Arch RISC-V 等)
运行环境的一般要求:
- 系统已预装或可通过包管理器安装
g++、make、cmake等常用构建工具 - 系统提供标准 C 库(glibc 或 musl)和 C++ 标准库(libstdc++)
- 网络连接正常,以便通过
apt、dnf、pacman等工具安装依赖库
开发环境准备
编译器
GCC/G++ for ROS2_LXQT
-
状态:GCC 在 ROS2_LXQT上已经有成熟支持,其他 Bianbu 系统的使用方法相同。
-
安装:
sudo apt update
sudo apt install build-essential g++ gcc -
常用编译参数:
-O2/-O3/-Ofast→ 优化等级-march=rv64gc→ 指定 RISC-V 基础指令集-march=rv64gcv→ 启用向量扩展
Clang/LLVM 支持情况
-
Clang/LLVM 的支持已进入主线,但某些优化/扩展可能不如 GCC 完善。
-
可通过包管理器安装:
sudo apt install clang -
使用时可通过
clang++替代g++进行编译。
验证编译器版本
g++ --version
clang++ --version
确认输出中包含 riscv64 或正确的版本号。
标准库
libstdc++ 状态
-
libstdc++是 GNU 提供的 C++ 标准库。它主要用于支持 C++ 语言的标准特性和库函数, 包括: 容器类、算法、 字符串类、 流和IO 、智能指针、 异常处理、 线程和并发。 -
确认方法:
dpkg -L libstdc++6
glibc 情况
-
glibc 是 GNU C Library,也就是 GNU 提供的 C 标准库,它和
libstdc++类似,但针对 C 语言,同时为 C++ 提供底层支持 -
ROS2_LXQT 使用 glibc
-
查看信息:
ldd --version
常用开发头文件路径
- 系统标准路径:
/usr/include//usr/lib/riscv64-linux-gnu/(库文件)/usr/include/c++/<版本号>/(C++ 头文件)
构建工具
make
-
最常见的构建工具。
-
安装:
sudo apt install make
cmake
-
常用的跨平台构建系统生成器。
-
安装:
sudo apt install cmake
ninja
-
更高效的构建工具,常与 CMake 配合使用(
cmake -G Ninja)。 -
安装:
sudo apt install ninja-build
调试与性能工具
gdb
-
GNU Debugger,支持 ROS2_LXQT。
-
安装:
sudo apt install gdb -
常用命令:
break、run、next、print、info registers
perf
-
Linux 的性能分析工具,可分析 CPU 指令、缓存、分支预测等。
-
安装:
sudo apt install linux-tools-common linux-tools-$(uname -r) -
检查是否可用:
perf stat ls
使用教程见:perf 使用教程
C++ 基础使用
Hello World 程序
最基础的 C++ 示例程序,可以验证编译器和环境是否正常工作。
#include <iostream>
int main() {
std::cout << "Hello, SpacemiT RISC-V64!" << std::endl;
return 0;
}