让树莓派支持C++17开发
时间不断地流逝,到目前已经是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

输出结果完全正确。
更多推荐
所有评论(0)