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

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

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

//DFRobot.com
//Compatible with the Arduino IDE 1.0
//Library version:1.1
#include <Wire.h>
#include <LiquidCrystal_I2C.h>

#if defined(ARDUINO) && ARDUINO >= 100
#define printByte(args)  write(args);
#else
#define printByte(args)  print(args,BYTE);
#endif

uint8_t bell[8]  = {0x4,0xe,0xe,0xe,0x1f,0x0,0x4};
uint8_t note[8]  = {0x2,0x3,0x2,0xe,0x1e,0xc,0x0};
uint8_t clocK[8] = {0x0,0xe,0x15,0x17,0x11,0xe,0x0};
uint8_t heart[8] = {0x0,0xa,0x1f,0x1f,0xe,0x4,0x0};
uint8_t duck[8]  = {0x0,0xc,0x1d,0xf,0xf,0x6,0x0};
uint8_t check[8] = {0x0,0x1,0x3,0x16,0x1c,0x8,0x0};
uint8_t cross[8] = {0x0,0x1b,0xe,0x4,0xe,0x1b,0x0};
uint8_t retarrow[8] = {	0x1,0x1,0x5,0x9,0x1f,0x8,0x4};
  
LiquidCrystal_I2C lcd(0x27,16,2);  // set the LCD address to 0x27 for a 16 chars and 2 line display

void setup()
{
  lcd.init();                      // initialize the lcd 
  lcd.backlight();
  
  lcd.createChar(0, bell);
  lcd.createChar(1, note);
  lcd.createChar(2, clocK);
  lcd.createChar(3, heart);
  lcd.createChar(4, duck);
  lcd.createChar(5, check);
  lcd.createChar(6, cross);
  lcd.createChar(7, retarrow);
  lcd.home();
  
  lcd.print("Hello world...");
  lcd.setCursor(0, 1);
  lcd.print(" i ");
  lcd.printByte(3);
  lcd.print(" arduinos!");
  delay(5000);
  displayKeyCodes();
  
}

// display all keycodes
void displayKeyCodes(void) {
  uint8_t i = 0;
  while (1) {
    lcd.clear();
    lcd.print("Codes 0x"); lcd.print(i, HEX);
    lcd.print("-0x"); lcd.print(i+16, HEX);
    lcd.setCursor(0, 1);
    for (int j=0; j<16; j++) {
      lcd.printByte(i+j);
    }
    i+=16;
    
    delay(4000);
  }
}

void loop()
{

}

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

"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
Araris аватар
Offline
Зарегистрирован: 09.11.2012

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

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

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

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

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

Araris
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... или нехватка виртуальной памяти.