arm の gcc 5.5 の現在のツール チェーンが C++17 構文を十分にサポートしていないことを考慮すると、ツール チェーンをアップグレードする必要があります。
詳細な手順は次のとおりです。公式ツールチェーンを使用する
ARM 公式ツールチェーン Web サイト:
https://developer.arm.com/downloads/-/arm-gnu-toolchain-downloads
ベアメタル バージョンは、オペレーティング システム (ベアメタル環境) を使用しない ARM 用に開発されています。
主に、Cortex-M アーキテクチャに対していくつかの最適化が行われました。
上記と同様に、tar.xz をダウンロードします。これはツール チェーン ファイルです。
なお、ascはtar.xzの署名ファイルですので、正しい組織が発行したものであることを確認してください(操作はできません)
確認したい場合の方法は以下の通りです。
gpg –verify tar.xz.asc tar.xz
Sha256asc は、検証データが完全であることを確認するための概要ファイルです (検証することが最善です)。
以下のような方法:
sha256sum tar.xz
ダウンロードが完了したら
sha 値を比較して、ファイルが正常であることを確認します。コマンドは次のとおりです。
ツールチェーンをインストールします。
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 を使用して正常にコンパイルされます。
以上で、ツールチェーンのアップグレードは完了です。