时间不断地流逝,到目前已经是2022年了,离2017年已经过去5年了。

因此开发语言也与时俱进,慢慢转换到C++17的版本上来了。要想在树莓派里使用更高的版本,需要安装g++10.1版本。
GCC支持C++版本如下:

 

下面就来进行这个过程:

更新最新的系统
$ sudo apt update && sudo apt upgrade -y

从库里下载二进制版本
$ git clone https://bitbucket.org/sol_prog/raspberry-pi-gcc-binary.git

进入下载的目录
$ cd raspberry-pi-gcc-binary

解压这个文件
$ tar -xjvf gcc-10.1.0-armhf-raspbian.tar.bz2

设置环境参数及链接,现将文件gcc-10.1.0移动到/opt路径下,然后再删除下载的文件。
$ sudo mv gcc-10.1.0 /opt
$ cd ..
$ sudo rm -rf raspberry-pi-gcc-binary/

接着添加编译路径及建立链接:

$ echo 'export PATH=/opt/gcc-10.1.0/bin:$PATH' >> ~/.bashrc
$ echo 'export LD_LIBRARY_PATH=/opt/gcc-10.1.0/lib:$LD_LIBRARY_PATH' >> ~/.bashrc 

运行一下,让当前控制台起作用:
$ . ~/.bashrc

$ sudo ln -s /usr/include/arm-linux-gnueabihf/sys /usr/include/sys
$ sudo ln -s /usr/include/arm-linux-gnueabihf/bits /usr/include/bits
$ sudo ln -s /usr/include/arm-linux-gnueabihf/gnu /usr/include/gnu
$ sudo ln -s /usr/include/arm-linux-gnueabihf/asm /usr/include/asm
$ sudo ln -s /usr/lib/arm-linux-gnueabihf/crti.o /usr/lib/crti.o
$ sudo ln -s /usr/lib/arm-linux-gnueabihf/crt1.o /usr/lib/crt1.o
$ sudo ln -s /usr/lib/arm-linux-gnueabihf/crtn.o /usr/lib/crtn.o

运行g++ 10.1版本,并显示:
$ g++-10.1 --version

可以在VS2019里配置这个版本支持,因为在树莓派里安装目录如下:

所以路径要这样设置:

这样就可以调用g++-10.1版本来编译C++的代码。

在树莓派里测试一下C++17的代码:

#include <iostream>

int main() {
    // if block with init-statement:
    if(int a = 5; a < 8) {
        std::cout << "Local variable a is < 8\n";
    } else {
        std::cout << "Local variable a is >= 8\n";
    }
    return 0;
}

 

$ g++-10.1 -std=c++17 -Wall -pedantic if_test.cpp -o if_test

 

输出结果完全正确。

 

 

Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐