[英]AVR gcc version < gcc release versions — why?
我注意到 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。
Atmel 和 Arduino 都附帶了avr-gcc的自定義構建以及所需工具鏈的其余部分(binutils、avr-libc)。 Arduino 實際上是 Atmel 工具鏈的下游,並且 Arduino 僅在 Atmel 更新時才更新其工具鏈。
Zak Kemble 有一篇漂亮的博客文章,其中包含工具鏈中所有內容(avr-gcc、binutils、avr-libc)的最新版本,可用於 Windows(以及 Make 和 AVRDUDE)、Linux 和 MacOS。 此外,Arch Linux 將 avr-gcc 的最新版本作為一個包保存在這里。
對於 Arduino,我提到的博客文章詳細介紹了如何將 avr-gcc 的更新版本集成到 Arduino IDE 中,如果您想自己構建 avr-gcc,還包括一個構建腳本。 我沒有使用過 Atmel Studio,不知道是否可以以類似的方式換出 avr-gcc 構建,但發行說明讓我認為這是可能的。
Atmel 和 Arduino 包括 avr-libc,它只支持 gcc 到 5.x。 這使您可以訪問 C++11。 您可以將其替換為更新的 avr-gcc、binutils 和其他版本,並繼續使用 IDE(至少對於 Arduino)。 如果您想釋放對 IDE 的選擇,請使用 AVRDUDE 或 arduino-cli(無論如何都使用 AVRDUDE)並從您的 IDE 或命令行調用它們。 最后,據我所知(我已經看過),沒有可用於 AVR 的現代 >= C++11 標准庫實現。
如果您想使用特定版本的 GCC,只需使用它。 自己構建或獲得預構建,您沒有理由需要使用 Atmel 沙箱。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.