ошибка компиляции скетча ArduCopter

feniks270392
Offline
Зарегистрирован: 21.10.2020

Добрый день. Пытаюсь собрать скетч для Arducopter (полетный контроллер на базе ардуино). 

Скетч то я написал, но вот с компиляцией проблемы следующего вида:

In file included from Print.h:27:0,
                 from Stream.h:26,
                 from HardwareSerial.h:28,
                 from Arduino.h:193,
                 from Platform.h:15,
                 from CDC.cpp:19:
Printable.h:23:17: fatal error: new.h: No such file or directory
 #include <new.h>
                 ^

в целом, я понимаю, что проблема в параметрах к компилятору avr-g++, а именно неккоректно или неполностью скармливаются ему пути, по которым нужно искать библиотеки для подключения. отвечает за это параметр -I и передается туда и правда что то совсем левое:

 -ID:\ard\ArduPilot-Arduino-1.0.3-windows\libraries\Wire

Писал в кастомной Arduino IDE для Arducopter вот отсюда

ошибка не в моем скетче, а в одной из подключаемых библиотек. Таких ошибок было много, но часть убрал переносом библиотек в папку со скетчем (да, не очень решение). Таким образом, директивы типа #include "some_lib" смогли отработать без проблем, но вот директивы типа #include <some_lib> - не работают, так как компилятор ищет файлы в настроенных путях.

Вопрос, собственно, в том, как поменять или подправить параметры для компилятора в Arduino IDE? Может там есть файл с настройками какой?

trembo
trembo аватар
Offline
Зарегистрирован: 08.04.2011

Файлы new.h  и Printable.h у меня нашлись тут:

C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino

feniks270392
Offline
Зарегистрирован: 21.10.2020

где они лежат я и так знаю. тут проблема в том, как компилятору сказать где он лежит?

b707
Онлайн
Зарегистрирован: 26.05.2017

feniks270392 пишет:

где они лежат я и так знаю. тут проблема в том, как компилятору сказать где он лежит?

ну так положите и эти файлы в каталог скетча, насколько я помню, в текущем каталоге Ардуина ищет в любом случае.

А если нет - дополнительно поменяйте #include <Lib> на #include "lib"

feniks270392
Offline
Зарегистрирован: 21.10.2020

во всех файлах библиотеки? нет... с компилятором или иде что то делать надо. мне и так вариант, что я подкинул почти все файлы к скетчу не нравится. к тому же его потом компилить будут и на других компьютерах

feniks270392
Offline
Зарегистрирован: 21.10.2020

Может есть какой то другой способ собирать прошивки под ардукоптер? может вручную как компилятором пользоваться? знает кто? сталкивался?

ua6em
ua6em аватар
Онлайн
Зарегистрирован: 17.08.2016

у меня всё компилировалось, имя юзера под виндами небось русское?

feniks270392
Offline
Зарегистрирован: 21.10.2020

Нет) вообще цифрами.  а вы именно под ардукоптер или под ардупайлот собирали?

b707
Онлайн
Зарегистрирован: 26.05.2017

Возьмите вместо "кастомной" обычную ардуино ИДЕ

feniks270392
Offline
Зарегистрирован: 21.10.2020

Не получится, так как работаю с ардупайлот (точнее, с ардукоптер) это не чистая ардуино. Она на базе платы ATMEGA 2560, если мне не изменяет память, но все же с модификациями и кучей своих библиотек, которые. по идее, должны упростить работу... самому все те функции прописывать точно не очень хочется

ua6em
ua6em аватар
Онлайн
Зарегистрирован: 17.08.2016

а папка временных файлов где лежит? я всегда от корня делаю C:\Temp

feniks270392
Offline
Зарегистрирован: 21.10.2020
\AppData\Local\Temp\build2535081376935356723.tmp\WMath.cpp.o 
Пример куда времянка сохраняется.
ua6em
ua6em аватар
Онлайн
Зарегистрирован: 17.08.2016

feniks270392 пишет:

\AppData\Local\Temp\build2535081376935356723.tmp\WMath.cpp.o 
Пример куда времянка сохраняется.

сделайте от корня

b707
Онлайн
Зарегистрирован: 26.05.2017

feniks270392 пишет:

это не чистая ардуино. Она на базе платы ATMEGA 2560, если мне не изменяет память, но все же с модификациями и кучей своих библиотек

ну если оно эту "кучу своих библиотек" видит - что мешает положить туда же этот проблемный файл? - раз библиотеки находятся. значит пути прописаны верно.

ИМХО, вы сами себя в угол загнали - класть в папку скетча не хотите(это некрасиво :), include править отказываетесь, ардуино ИДЕ менять тоже... Вам проблему надо решить или нет? решите ее сначала "некрасиво". а потом будете искать "самый правильный путь"

feniks270392
Offline
Зарегистрирован: 21.10.2020

ua6em пишет:

feniks270392 пишет:

\AppData\Local\Temp\build2535081376935356723.tmp\WMath.cpp.o 
Пример куда времянка сохраняется.

сделайте от корня

 

Подскажите как это сделать?

feniks270392
Offline
Зарегистрирован: 21.10.2020

b707 пишет:

feniks270392 пишет:

это не чистая ардуино. Она на базе платы ATMEGA 2560, если мне не изменяет память, но все же с модификациями и кучей своих библиотек

ну если оно эту "кучу своих библиотек" видит - что мешает положить туда же этот проблемный файл? - раз библиотеки находятся. значит пути прописаны верно.

ИМХО, вы сами себя в угол загнали - класть в папку скетча не хотите(это некрасиво :), include править отказываетесь, ардуино ИДЕ менять тоже... Вам проблему надо решить или нет? решите ее сначала "некрасиво". а потом будете искать "самый правильный путь"

 

в том то и проблема - не видит... в настройках можно только указать путь до скетчбука - его указал, но в выводе в консоли при проверке пути к библиотекам компилятору скармливаются неккоректные.

 

фана ради и уже от безысходности поправил  и перетащил все файлы как надо (без малого, около 50 штук вручную правил). Не собралось... но ошибку дало иную - 

sketch_oct08a.cpp.o:C:\Users\11\AppData\Local\Temp\build2535081376935356723.tmp/MPU6050_6Axis_MotionApps20.h:296: more undefined references to `Serial' follow
sketch_oct08a.cpp.o: In function `setup':
D:\ard\ArduPilot-Arduino-1.0.3-windows/sketch_oct08a.ino:50: undefined reference to `HardwareSerial::begin(unsigned long)'
D:\ard\ArduPilot-Arduino-1.0.3-windows/sketch_oct08a.ino:51: undefined reference to `Serial'
D:\ard\ArduPilot-Arduino-1.0.3-windows/sketch_oct08a.ino:51: undefined reference to `Serial'
 
если что, ругается на строчку изначально в setup
Serial.begin(115200);
 
Да, почему используется еще именно кастомная IDE. в настройках можно выбрать дополнительно кроме платы еще и HAL board - там есть отличия между версиями 1.х и 2.х соотвественно, в стандартной ардуине это не выбрать никак, и компиляция там будет заведомо провальная, как мне кажется. 
Я пробовал на стандартной, но не стал долго разбираться, а сделал как советовали на вики разработчика - скачал кастомную IDE
ua6em
ua6em аватар
Онлайн
Зарегистрирован: 17.08.2016

feniks270392 пишет:

Подскажите как это сделать?

feniks270392
Offline
Зарегистрирован: 21.10.2020

оу.. использует стандартные пути - не знал. Думал у иде свой параметр где то есть

b707
Онлайн
Зарегистрирован: 26.05.2017

feniks270392 пишет:

фана ради и уже от безысходности поправил  и перетащил все файлы как надо (без малого, около 50 штук вручную правил). Не собралось... но ошибку дало иную - 

sketch_oct08a.cpp.o:C:\Users\11\AppData\Local\Temp\build2535081376935356723.tmp/MPU6050_6Axis_MotionApps20.h:296: more undefined references to `Serial' follow
sketch_oct08a.cpp.o: In function `setup':
D:\ard\ArduPilot-Arduino-1.0.3-windows/sketch_oct08a.ino:50: undefined reference to `HardwareSerial::begin(unsigned long)'
D:\ard\ArduPilot-Arduino-1.0.3-windows/sketch_oct08a.ino:51: undefined reference to `Serial'
D:\ard\ArduPilot-Arduino-1.0.3-windows/sketch_oct08a.ino:51: undefined reference to `Serial'

поздравляю, теперь оно у вас не видит стандартных библиотек...

 

По-моему. вы изначально что-то криво поставили. Найдите чистую винду и поставьте сборку Ардупилота с нля. как описано на сайте, ничего не меняя

feniks270392
Offline
Зарегистрирован: 21.10.2020

удивительно, но это помогло почему то...

Но теперь по прежнему ругается на Serial

А стандартные скетчи из ардупайлот по прежнему не собираются... странно очень

ua6em
ua6em аватар
Онлайн
Зарегистрирован: 17.08.2016

b707 пишет:

По-моему. вы изначально что-то криво поставили. Найдите чистую винду и поставьте сборку Ардупилота с нля. как описано на сайте, ничего не меняя

на каждый чих винду переставлять? я на своём лет 12-15 назад XP поставил )))

feniks270392
Offline
Зарегистрирован: 21.10.2020

b707 пишет:

feniks270392 пишет:

фана ради и уже от безысходности поправил  и перетащил все файлы как надо (без малого, около 50 штук вручную правил). Не собралось... но ошибку дало иную - 

sketch_oct08a.cpp.o:C:\Users\11\AppData\Local\Temp\build2535081376935356723.tmp/MPU6050_6Axis_MotionApps20.h:296: more undefined references to `Serial' follow
sketch_oct08a.cpp.o: In function `setup':
D:\ard\ArduPilot-Arduino-1.0.3-windows/sketch_oct08a.ino:50: undefined reference to `HardwareSerial::begin(unsigned long)'
D:\ard\ArduPilot-Arduino-1.0.3-windows/sketch_oct08a.ino:51: undefined reference to `Serial'
D:\ard\ArduPilot-Arduino-1.0.3-windows/sketch_oct08a.ino:51: undefined reference to `Serial'

поздравляю, теперь оно у вас не видит стандартных библиотек...

 

По-моему. вы изначально что-то криво поставили. Найдите чистую винду и поставьте сборку Ардупилота с нля. как описано на сайте, ничего не меняя

 

ничего я криво не ставил. тут еще вариант, что я не все перетащил к скетчу - стандартные остались за бортом. а все потому, что копал не компилятор, а как вы советовали начал лазить и менять библиотечки

feniks270392
Offline
Зарегистрирован: 21.10.2020

ладно... если ничего не придет путного в голвоу - попробую на cygwin собрать.

Просто в вики разрабов приводится пример как компилиить готовые прошивки, написанные ими же. А там и make-файлы уже собраны. А мне нужен немного иной функционал. Думал, через кастомную иде проще будет писать и собирать скетчи.

ua6em
ua6em аватар
Онлайн
Зарегистрирован: 17.08.2016

feniks270392 пишет:

ладно... если ничего не придет путного в голвоу - попробую на cygwin собрать.

Просто в вики разрабов приводится пример как компилиить готовые прошивки, написанные ими же. А там и make-файлы уже собраны. А мне нужен немного иной функционал. Думал, через кастомную иде проще будет писать и собирать скетчи.

ну скиньте куда, на этом компе нет, попробую ваш проект скомпилировать, только адру неправленную тоже, начинать надо с этого

feniks270392
Offline
Зарегистрирован: 21.10.2020

ua6em пишет:

feniks270392 пишет:

ладно... если ничего не придет путного в голвоу - попробую на cygwin собрать.

Просто в вики разрабов приводится пример как компилиить готовые прошивки, написанные ими же. А там и make-файлы уже собраны. А мне нужен немного иной функционал. Думал, через кастомную иде проще будет писать и собирать скетчи.

ну скиньте куда, на этом компе нет, попробую ваш проект скомпилировать, только адру неправленную тоже, начинать надо с этого

 

сам скетч

а это инструкция с установкой IDE + библиотек

ua6em
ua6em аватар
Онлайн
Зарегистрирован: 17.08.2016

Это не скетч, а огрызок, все файлы должны быть в папке скетча, все, полный комплект, а уже там выбираете и меняете нужный вам файл

feniks270392
Offline
Зарегистрирован: 21.10.2020

Не совсем понял. Остальные файлы - это непосредственно стандартная библиотека ардуино + то, что было в скетчбуке ардупайлот. Зачем их в папку со скетчем?

ua6em
ua6em аватар
Онлайн
Зарегистрирован: 17.08.2016

а как оно тебе скомпилируется, весь проект должен быть в папке

feniks270392
Offline
Зарегистрирован: 21.10.2020

для этого и есть параметры компилятора - там в параметрах пути и указываются. Можно пример на основе огрызка скетча, какой еще файл должен лежать рядом с ним?

feniks270392
Offline
Зарегистрирован: 21.10.2020

хмм.. попробовал через cygwin + eclipse + ardupilot. в целом, получилось. Но этот способ не поддерживает платы APM. 

может еще у кого мысли есть? плат АРМ много еще осталось, кто нибдуь тоже может в будущем захотеть приспособить их под свои нужды и напорется на ту же проблему, что и у меня

feniks270392
Offline
Зарегистрирован: 21.10.2020

хмм.. попробовал через cygwin + eclipse + ardupilot. в целом, получилось. Но этот способ не поддерживает платы APM. 

может еще у кого мысли есть? плат АРМ много еще осталось, кто нибдуь тоже может в будущем захотеть приспособить их под свои нужды и напорется на ту же проблему, что и у меня

ua6em
ua6em аватар
Онлайн
Зарегистрирован: 17.08.2016

там обычная 2560 если apm 2.5 -2.8