Ошибка компиляции

sally555
sally555 аватар
Offline
Зарегистрирован: 28.05.2015

Компилирую скетч из примеров к библиотеке LiquidCrystal_I2C.

01//DFRobot.com
02//Compatible with the Arduino IDE 1.0
03//Library version:1.1
04#include <Wire.h>
05#include <LiquidCrystal_I2C.h>
06 
07#if defined(ARDUINO) && ARDUINO >= 100
08#define printByte(args)  write(args);
09#else
10#define printByte(args)  print(args,BYTE);
11#endif
12 
13uint8_t bell[8]  = {0x4,0xe,0xe,0xe,0x1f,0x0,0x4};
14uint8_t note[8]  = {0x2,0x3,0x2,0xe,0x1e,0xc,0x0};
15uint8_t clocK[8] = {0x0,0xe,0x15,0x17,0x11,0xe,0x0};
16uint8_t heart[8] = {0x0,0xa,0x1f,0x1f,0xe,0x4,0x0};
17uint8_t duck[8]  = {0x0,0xc,0x1d,0xf,0xf,0x6,0x0};
18uint8_t check[8] = {0x0,0x1,0x3,0x16,0x1c,0x8,0x0};
19uint8_t cross[8] = {0x0,0x1b,0xe,0x4,0xe,0x1b,0x0};
20uint8_t retarrow[8] = { 0x1,0x1,0x5,0x9,0x1f,0x8,0x4};
21   
22LiquidCrystal_I2C lcd(0x27,16,2);  // set the LCD address to 0x27 for a 16 chars and 2 line display
23 
24void setup()
25{
26  lcd.init();                      // initialize the lcd
27  lcd.backlight();
28   
29  lcd.createChar(0, bell);
30  lcd.createChar(1, note);
31  lcd.createChar(2, clocK);
32  lcd.createChar(3, heart);
33  lcd.createChar(4, duck);
34  lcd.createChar(5, check);
35  lcd.createChar(6, cross);
36  lcd.createChar(7, retarrow);
37  lcd.home();
38   
39  lcd.print("Hello world...");
40  lcd.setCursor(0, 1);
41  lcd.print(" i ");
42  lcd.printByte(3);
43  lcd.print(" arduinos!");
44  delay(5000);
45  displayKeyCodes();
46   
47}
48 
49// display all keycodes
50void displayKeyCodes(void) {
51  uint8_t i = 0;
52  while (1) {
53    lcd.clear();
54    lcd.print("Codes 0x"); lcd.print(i, HEX);
55    lcd.print("-0x"); lcd.print(i+16, HEX);
56    lcd.setCursor(0, 1);
57    for (int j=0; j<16; j++) {
58      lcd.printByte(i+j);
59    }
60    i+=16;
61     
62    delay(4000);
63  }
64}
65 
66void loop()
67{
68 
69}

Компилятор мне вот что пишет.

"Arduino: 1.6.5 (Windows XP), Плата"Arduino Uno" Используем библиотеку Wire в папке: C:\Program Files\Arduino\hardware\arduino\avr\libraries\Wire Используем библиотеку LiquidCrystal_I2C в папке: C:\Documents and Settings\Admin\Мои документы\Arduino\libraries\LiquidCrystal_I2C (legacy)

*

*

*

 C:\Program Files\Arduino\hardware\tools\avr/bin/avr-gcc -w -Os -Wl,--gc-sections -mmcu=atmega328p -o C:\DOCUME~1\Admin\LOCALS~1\Temp\build7989869042181060496.tmp/CustomChars.cpp.elf C:\DOCUME~1\Admin\LOCALS~1\Temp\build7989869042181060496.tmp\CustomChars.cpp.o C:\DOCUME~1\Admin\LOCALS~1\Temp\build7989869042181060496.tmp\Wire\Wire.cpp.o C:\DOCUME~1\Admin\LOCALS~1\Temp\build7989869042181060496.tmp\Wire\utility\twi.c.o C:\DOCUME~1\Admin\LOCALS~1\Temp\build7989869042181060496.tmp\LiquidCrystal_I2C\LiquidCrystal_I2C.cpp.o C:\DOCUME~1\Admin\LOCALS~1\Temp\build7989869042181060496.tmp/core.a -LC:\DOCUME~1\Admin\LOCALS~1\Temp\build7989869042181060496.tmp -lm

collect2.exe: error: ld returned 5 exit status Ошибка компиляции."

И сама винда ругается вот так:

Что делать не понятно.

 

Araris
Offline
Зарегистрирован: 09.11.2012

ld.exe умирает на любом скетче, или только на этом ?

sally555
sally555 аватар
Offline
Зарегистрирован: 28.05.2015

не только на этом, но и не на всех

sally555
sally555 аватар
Offline
Зарегистрирован: 28.05.2015

бывает что одну строку добавляю и ошибка вылазит

Araris
Offline
Зарегистрирован: 09.11.2012

Может стоит IDE переустановить.

sally555
sally555 аватар
Offline
Зарегистрирован: 28.05.2015

Araris пишет:

Может стоит IDE переустановить.

По другому никак? Я конечно попробую переустановить, мне не трудно. А что это за зверь такой ld.exe и почему он отваливается?

Looka
Offline
Зарегистрирован: 24.04.2012

sally555 пишет:

Araris пишет:

Может стоит IDE переустановить.

По другому никак? Я конечно попробую переустановить, мне не трудно. А что это за зверь такой ld.exe и почему он отваливается?

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

 

 

sally555
sally555 аватар
Offline
Зарегистрирован: 28.05.2015

у меня есть скаченный архив, просто переписать на прежнее место?

Looka
Offline
Зарегистрирован: 24.04.2012

sally555 пишет:

у меня есть скаченный архив, просто переписать на прежнее место?

В любое другое.  Если Ваш арзив это не архив инстолятора, а Windows ZIP file for non admin install

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

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

Токально можно обойти ошибку, если добавлять в код ненужные переменные. Может потребоваться более десятка. На размер занимаемой памяти это не повлияет, т.к. оптимизатор их все равно удалит.

Более глобальный способ борьбы - скачать старую версию среды (1.0.?) и взять ld.exe оттуда.

sally555
sally555 аватар
Offline
Зарегистрирован: 28.05.2015

andriano пишет:

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

Токально можно обойти ошибку, если добавлять в код ненужные переменные. Может потребоваться более десятка. На размер занимаемой памяти это не повлияет, т.к. оптимизатор их все равно удалит.

Более глобальный способ борьбы - скачать старую версию среды (1.0.?) и взять ld.exe оттуда.

Значит ошибка только на WinXP проявляется? Печально. У меня комп на работе старый выше хп ничего не встанет. Чем же ему хп не нравится, подозреваю проблемы со стеком? А вот вы про переменные пишите, а в каком месте их лучше объявить и сколько, а вот поможет ли в этом случае объявление большого массива?

Ладно, буду пробовать.

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

А с  http://www.arduino.org/ не пробовали запускать?

sally555
sally555 аватар
Offline
Зарегистрирован: 28.05.2015

trembo пишет:

А с  http://www.arduino.org/ не пробовали запускать?

Что именно запускать, IDE?

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

Попробуйте запустить. Да, ИДЕ

sally555
sally555 аватар
Offline
Зарегистрирован: 28.05.2015

Вообщем взял из архива ld.exe и скопировал в папку с компилятором, все заработало. Спасибо коллеги!

DVAL
Offline
Зарегистрирован: 18.08.2017

Если windows XP то советую работать с IDE Arduino 1.8.3 / 1.8.4 Nightly другие версии IDE на windows XP иногда глючат, причем на ровном месте. Выдают ошибку "collect2.exe: error: ld returned 5 exit status"

b707
Offline
Зарегистрирован: 26.05.2017

DVAL, а вы на дату предыдущего поста обратили внимание? :)

arduino328
Offline
Зарегистрирован: 01.09.2016

DVAL пишет:

Если windows XP то советую работать с IDE Arduino 1.8.3 / 1.8.4 Nightly другие версии IDE на windows XP иногда глючат, причем на ровном месте. Выдают ошибку "collect2.exe: error: ld returned 5 exit status"

У меня на Windows XP прекрасно работают Arduino IDE: 1.0.5, 1.6.5, 1.6.12. Работали и другие версии, но удалил их за ненадобностью.

sally555
sally555 аватар
Offline
Зарегистрирован: 28.05.2015

У меня с тех пор все отлично работает на ХР)

Jeka_M
Jeka_M аватар
Offline
Зарегистрирован: 06.07.2014

DVAL пишет:

IDE Arduino 1.8.3 / 1.8.4 Nightly

Ни в коем случае не советую ночные сборки (Nightly), только релизные.

DVAL
Offline
Зарегистрирован: 18.08.2017
 
Да релизные работают, но не знаю, возможно это глюк именно моей операционки, но "collect2.exe: error: ld returned 5 exit status"   вылетает при малом количестве строк в коде. Если компилить код 10 - 40 строк то часто  вылетает  ошибка.  когда в коде 100 - 1000 строк такого не наблюдалось.
 
 Сначала  прочитал совет подменить ld.exe с ранних версий. Иногда помогало, Пробывал советы по добавлению лишних операторов, объявление десятка лишних переменных, то же помогало, но не надолго, потом нашел инфу что Nightly  с XP дружит. С ней все проблемы исчезли. Возможно вылезут в будущем, потому как ночная не релиз.  Но пока все нормально.  Конечно же пользуюсь релизом, но когда "достает" перехожу на Nightly ненадолго :) 
DVAL
Offline
Зарегистрирован: 18.08.2017

При чем тут дата? Я же сюда попал в поисках своей проблемы и раньше эту ветку просматривал. Возможно и еще кто попадет у кого подобные траблы. Описал способ который мне помог. Возможно поможет еще кому то. Хотя от XP даже мелкософт отказался, но не на всем железе семерки и десятки адекватно работают. А железо то еще вполне рабочее.... Для  программирования ардуинки   

П.Михаил
Offline
Зарегистрирован: 11.12.2017

Я новичок в этом деле, и столкнулся с этой же проблемой, ковырял два дня с перерывами. Виндос ХР sp3, оказалось все просто! В установленной FLprog-3.0.2 впапке ideV2 открыл свойства файлов arduino и arduino_debug на вкладке совместимость выбрал режим совместимости Windows 98/Windows Me и чудо свершилось. Чего и вам желаю.

dimwap
Offline
Зарегистрирован: 29.09.2012

Не нужно ничего переустанавливать или заменять ld.exe - дело вовсе не в этом.

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

NfO
NfO аватар
Offline
Зарегистрирован: 20.09.2016

Память не может быть "read". - да, она такая ...

Сделал как тут (в конце страницы) - всё заработало.

https://frompinskto.wordpress.com/2016/01/14/arduino-%D0%BE%D1%88%D0%B8%...

Аноним
26.03.2017 at 20:04
идем в …Arduino\hardware\tools\avr\avr\bin
правая кнопка на файле LD.exe свойства
вкладка совместимость
галка «запускать программу в режиме совместимости
и из списка выбираем «windows 98/windows Me»
профит
 
Иван Дьяченков
Offline
Зарегистрирован: 18.03.2020

Всем добрый вечер, компилирую скетч и выдает такую ошибку как быть???

 

mykaida
mykaida аватар
Offline
Зарегистрирован: 12.07.2018

4 и 6 строки - а что в ccu5Xidr делает main()? Если Вы использовали его как имя функции, то настоятельно советую поменять.

Иван Дьяченков
Offline
Зарегистрирован: 18.03.2020

mykaida пишет:

4 и 6 строки - а что в ccu5Xidr делает main()? Если Вы использовали его как имя функции, то настоятельно советую поменять.

нет я его не применял не где, функции loop не было вот и ругался он, добавил функцию и все ок, теперь надо смотреть как на дисплее все отобразит