Arduino and C++17 ( AVR-GCC 8.x)

kokuam
kokuam аватар
Offline
Зарегистрирован: 10.01.2017

Всем привет, удавалось ли кому обновить GCC в ардуине от древнего 4.9 до более менее свежего 8.x ?
Поставил билд отсюда http://blog.zakkemble.co.uk/avr-gcc-builds/
Но, при компиляции выдает ошибку  ".../ar.exe: unable to rename ...core.a' ; reason: File exists"
Запускал из-под админа, антивирусы отключены, менял папки, менял версии IDE ( 1.8.x 1.9 ... ) Win7_32 и Win10_64 везде эта ошибка.
Кто обновлялся, подскажите пожалуйста. Спасибо :)

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

?

kokuam
kokuam аватар
Offline
Зарегистрирован: 10.01.2017

победил, угадав пред-предыдущий билд этого автора : http://blog.zakkemble.co.uk/download/avr-gcc-7.2.0-x86-mingw.zip
этот работает!

a5021
Offline
Зарегистрирован: 07.07.2013

И в чем смысл этой затеи?

kokuam
kokuam аватар
Offline
Зарегистрирован: 10.01.2017

например, теперь могу делать так:

struct X{

 inline static int n = 1;

};

раньше я статические члены мог инициализировать только в .cpp файле вдали от определения класса, что сильно раздражало
 

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Так это и раньше было можно, если опции которые с IDE идут поменять.

В 17 С++ есть гораздо блее интересные вещи!

kokuam
kokuam аватар
Offline
Зарегистрирован: 10.01.2017

Занятно, это какие конкретно опции надо было поменять в IDE ?

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Не помню, но из общих соображений - выключить строгую поддержку ISO и включить поддержку С++ 11. Но точно можно было, я как-то пробовал. И описатель auto, кстати, тоже вполне себе включался.

kokuam
kokuam аватар
Offline
Зарегистрирован: 10.01.2017

Ясно, понятно.

Есть файл : ...\Arduino\hardware\arduino\avr\platform.txt
в нем можно включить поддержку C++14 ( C++11 и так включена по-умолчанию и "auto" в некотором виде там уже есть)
вот так включается C++14: compiler.cpp.flags=-c -g -Os {compiler.warning_flags} -std=gnu++14 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -MMD -flto

Arduino, даже последняя бета содержит максимум GCC 5.4.0, а Inline variables появились только в GCC 7.x и никакими "опциями которые с IDE" из GCC4 GCC7 не сделать :-(

Мне самому это совсем недавно рассказали, пишу дабы систематизировать информацию.
тут можно почитать в какой версии GCC что появилось:
https://gcc.gnu.org/projects/cxx-status.html#cxx17

 
Arhat109-2
Offline
Зарегистрирован: 24.09.2015

Да, это практически "make", в нем все базовые настройки всех опций и последовательностей сборки. Там можно втыкать свои хуки, где-то было описание. Также можно переколбасить boards.txt .. вот тут, как пример перенастройки для вариантов плат и камней с поддержкой шины расширения внутренней SRAM и даже с подключением своего скрипта сборщику: http://arduino.ru/forum/proekty/samodelnaya-mega2560-128a-s-pamyatyu-512...

Как пример, вполне сгодится.

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Не, я не про inline писал, а про инициализацию

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

ЕвгенийП пишет:

 И описатель auto, кстати, тоже вполне себе включался.

У мня auto всегда работал искаропки, я никаких опций не включал

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Ну, может каропки разные - мне пришлось "повключать"

Rumata
Rumata аватар
Offline
Зарегистрирован: 29.03.2019

А не подскажете, уважаемые, как посмотреть версию avr-gcc из каропки 1.8.13 и 2.0.0 и какой стандарт С++ оно из этой каропки поддерживает? 

 

wdrakula
wdrakula аватар
Offline
Зарегистрирован: 15.03.2016

Rumata пишет:

А не подскажете, уважаемые, как посмотреть версию avr-gcc из каропки 1.8.13 и 2.0.0 и какой стандарт С++ оно из этой каропки поддерживает? 

 

?????????????????

сорян, друг, то это... пятница шоле? Пьян шоле?

avr-gcc --version     тащемта! Как и у любого GNU продукта.

Komandir
Komandir аватар
Offline
Зарегистрирован: 18.08.2018

gcc version 7.3.0 (GCC)

wdrakula
wdrakula аватар
Offline
Зарегистрирован: 15.03.2016

Komandir пишет:

gcc version 7.3.0 (GCC)

Удочку, млять, а не рыбу!!!! Рыба - в рыбном, етиеёмать!

Rumata
Rumata аватар
Offline
Зарегистрирован: 29.03.2019

wdrakula пишет:
... пятница шоле? Пьян шоле?

Так эта.. Уже еще нет. Только собираюсь.

Такого не знал. Теперь буду. Спасибо

Rumata
Rumata аватар
Offline
Зарегистрирован: 29.03.2019

Komandir пишет:

gcc version 7.3.0 (GCC)

Да, спасибо, уже посмотрел. 

kokuam
kokuam аватар
Offline
Зарегистрирован: 10.01.2017
Еще можно в Serial напечатать значение этих макросов :
__GNUC__
__GNUC_MINOR__
__GNUC_PATCHLEVEL__
 Мне казалось, что в Ардуиновском пакете уже давно 8-ка идёт, но могу ошибаться.
ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Rumata пишет:
какой стандарт С++ оно из этой каропки поддерживает?
А это в файле platform.txt. Скорее всего 11. Замените на 17 или 1z - будет 17. Только тогда готовьтесь пару файлов править на предмет new и delete - я тут на форуме как-то писал что и как.

Rumata
Rumata аватар
Offline
Зарегистрирован: 29.03.2019

ЕвгенийП, спасибо

Green
Offline
Зарегистрирован: 01.10.2015

А вот человек собрал 10.2.0: https://www.lumito.net/2020/11/02/lumito-avr-gcc-releases/