Lou*_* B. 2 c++ gcc avr atmelstudio
我注意到 AVR 的 gcc 落后于 gcc 的主要开发流程。例如,AVR8 的 gcc 在 Atmel Studio 7 和 Arduino 中为 4.9.2,AVR32 在 Atmel Studio 中为 4.4.7。同时,gcc 4.9.4 是当前的 4.9 版本,开发正在推动多个分支 5.x、6.x 和 7.x ( https://gcc.gnu.org/develop.html )。
更新(2019 年 11 月): Atmel Studio 和 Arduino 工具链现已升级至 gcc 5.4,但仍仅完全实现 C++11。
我担心的是,通过将 C++ 语言最近添加的功能与较旧的编译器一起使用,我可能会遇到早期实现问题。此外,gcc 中 AVR 支持的开发过程尚不清楚。
当使用某些构建选项构建并传递正确的标志时,gcc 支持 AVR 编译。使用这些特定于 AVR 的构建选项构建的 gcc 是 avr-gcc。
\nAtmel 和 Arduino 都附带了avr-gcc的自定义构建以及所需工具链的其余部分(binutils、avr-libc)。Arduino 实际上是 Atmel 工具链的下游,Arduino 仅在 Atmel 更新其工具链时才更新。
\nZak Kemble发表了一篇精彩的博客文章,其中包含工具链中所有内容(avr-gcc、binutils、avr-libc)的最新版本,可用于 Windows(以及 Make 和 AVRDUDE)、Linux 和 MacOS。此外,Arch Linux在这里将 avr-gcc 的最新版本作为软件包保留。
\n对于 Arduino,我提到的博客文章详细介绍了如何将 avr-gcc 的更新版本集成到 Arduino IDE 中,并包含一个构建脚本(如果您想自己构建 avr-gcc)。我没有使用过 Atmel Studio,也不知道是否可以以类似的方式替换 avr-gcc 版本,但发行说明让我认为这是可能的。
\nAtmel 和 Arduino 包含 avr-libc,它仅支持 gcc 至 5.x。这使您可以访问 C++11。您可以将其替换为较新版本的 avr-gcc、binutils 等,并继续使用 IDE(至少对于 Arduino)。如果您想自由选择 IDE,请使用 AVRDUDE 或 arduino-cli(无论如何都会使用 AVRDUDE)并从 IDE 或命令行调用它们。最后,据我所知(并且我已经研究过),没有可用于 AVR 的现代 >= C++11 标准库实现。
\n