簡體   English   中英

AVR gcc 版本 < gcc 發布版本 — 為什么?

[英]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 支持的開發過程尚不清楚。

  • 是否將 C++ 語言的新特性添加到 gcc + AVR 工具鏈中?
  • 我可以將它們與 Atmel Studio 或 Arduino IDE 一起使用嗎?

概述

當使用某些構建選項構建並傳遞正確的標志時,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 構建,但發行說明讓我認為這是可能的。

注意事項:

  • gcc wiki上討論過但這里沒有討論的一點是 avr-libc,它似乎在很大程度上處於非活動狀態(幾年內沒有 repo 提交)。 即使 gcc 支持您的目標平台,avr-libc 也必須支持它。 如上所述,gcc 5.x 停止支持。
  • Atmel 警告說,AVR 上的 C++ 存在已知的限制,avr-libc 常見問題解答 在此處進行了討論。 基本上,如果您希望使用標准庫,那么您就不走運了

總結:

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM