虑到目前arm的gcc 5.5的工具链对C++17语法支持不足,需要升级下工具链。
以下是详细步骤。使用官方提供的工具链
ARM官方的工具链网站:
https://developer.arm.com/downloads/-/arm-gnu-toolchain-downloads
bare-metal这个版本就是没有操作系统(裸机环境)下针对ARM开发。
主要是针对Cortex-M架构做了一些优化。
如上,下载tar.xz,这个就是工具链文件
此外,asc是tar.xz的签名文件,确保是正确机构发布的(可以不操作)
如果要验证,方法如下:
gpg –verify tar.xz.asc tar.xz
Sha256asc是摘要文件,确保验证数据是完整的(最好验证下)
方法如下:
sha256sum tar.xz
下载完成后
对比下sha值确保文件ok,命令如下:
安装工具链:
1:解压缩
sudo tar -xvf arm-gnu-toolchain-12.3.rel1-x86_64-arm-none-linux-gnueabihf.tar.xz -C /opt/gcc12.3
2:运行查看版本
版本:
3:配置环境变量
先创建软链接,防止命令和已有老的命令重复了
4:代码编译
之前使用5.5的工具链,不支持make_unique,代码如下,
#include <iostream>
#include <memory>
int main()
{
std::unique_ptr<int> p = std::make_unique<int>(10);
std::cout<<"this is a test !!" << std::endl;
getchar();
}
使用gnu5.5的工具,gcc为:
编译错误,不支持make_unique,如下:
同样的代码使用gcc12.3编译成功:
以上,升级工具链完成