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

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