Ошибка при компиляции скетча "collect2.exe: error: ld returned 1 exit status"

MixaGeek
Offline
Зарегистрирован: 08.09.2016

Образовалась одна проблема:

Если в коде использовать процедуру Tin();, то возникает ошибка:

C:\Users\FDE7~1\AppData\Local\Temp\ccYndXXD.s: Assembler messages:

C:\Users\FDE7~1\AppData\Local\Temp\ccYndXXD.s:157: Error: unknown opcode `delay2'

C:\Users\FDE7~1\AppData\Local\Temp\ccYndXXD.s:196: Error: unknown opcode `delay1'

C:\Users\FDE7~1\AppData\Local\Temp\ccYndXXD.s:198: Error: unknown opcode `delay2'

C:\Users\FDE7~1\AppData\Local\Temp\ccYndXXD.s:201: Error: unknown opcode `delay2'

C:\Users\FDE7~1\AppData\Local\Temp\ccYndXXD.s:204: Error: unknown opcode `delay2'

C:\Users\FDE7~1\AppData\Local\Temp\ccYndXXD.s:207: Error: unknown opcode `delay2'

C:\Users\FDE7~1\AppData\Local\Temp\ccYndXXD.s:210: Error: unknown opcode `delay2'

C:\Users\FDE7~1\AppData\Local\Temp\ccYndXXD.s:213: Error: unknown opcode `delay1'

C:\Users\FDE7~1\AppData\Local\Temp\ccYndXXD.s:218: Error: unknown opcode `delay1'

C:\Users\FDE7~1\AppData\Local\Temp\ccYndXXD.s:221: Error: unknown opcode `delay3'

C:\Users\FDE7~1\AppData\Local\Temp\ccYndXXD.s:254: Error: unknown opcode `svprt'

C:\Users\FDE7~1\AppData\Local\Temp\ccYndXXD.s:258: Error: unknown opcode `o1bs'

C:\Users\FDE7~1\AppData\Local\Temp\ccYndXXD.s:262: Error: unknown opcode `o1bs'

C:\Users\FDE7~1\AppData\Local\Temp\ccYndXXD.s:263: Error: unknown opcode `delay2'

C:\Users\FDE7~1\AppData\Local\Temp\ccYndXXD.s:265: Error: unknown opcode `o1bs'

C:\Users\FDE7~1\AppData\Local\Temp\ccYndXXD.s:266: Error: unknown opcode `delay2'

C:\Users\FDE7~1\AppData\Local\Temp\ccYndXXD.s:268: Error: unknown opcode `o1bs'

C:\Users\FDE7~1\AppData\Local\Temp\ccYndXXD.s:269: Error: unknown opcode `delay2'

C:\Users\FDE7~1\AppData\Local\Temp\ccYndXXD.s:271: Error: unknown opcode `o1bs'

C:\Users\FDE7~1\AppData\Local\Temp\ccYndXXD.s:272: Error: unknown opcode `delay2'

C:\Users\FDE7~1\AppData\Local\Temp\ccYndXXD.s:274: Error: unknown opcode `o1bs'

C:\Users\FDE7~1\AppData\Local\Temp\ccYndXXD.s:275: Error: unknown opcode `delay2'

C:\Users\FDE7~1\AppData\Local\Temp\ccYndXXD.s:277: Error: unknown opcode `o1bs'

C:\Users\FDE7~1\AppData\Local\Temp\ccYndXXD.s:278: Error: unknown opcode `delay1'

C:\Users\FDE7~1\AppData\Local\Temp\ccYndXXD.s:281: Error: unknown opcode `o1bs'

C:\Users\FDE7~1\AppData\Local\Temp\ccYndXXD.s:283: Error: unknown opcode `delay1'

C:\Users\FDE7~1\AppData\Local\Temp\ccYndXXD.s:285: Error: unknown opcode `o1bs'

C:\Users\FDE7~1\AppData\Local\Temp\ccYndXXD.s:286: Error: unknown opcode `svprt'

C:\Users\FDE7~1\AppData\Local\Temp\ccYndXXD.s:288: Error: unknown opcode `o1bs'

C:\Users\FDE7~1\AppData\Local\Temp\ccYndXXD.s:320: Error: unknown opcode `svprt'

C:\Users\FDE7~1\AppData\Local\Temp\ccYndXXD.s:324: Error: unknown opcode `o1bs'

C:\Users\FDE7~1\AppData\Local\Temp\ccYndXXD.s:327: Error: unknown opcode `delay1'

C:\Users\FDE7~1\AppData\Local\Temp\ccYndXXD.s:329: Error: unknown opcode `o1bs'

C:\Users\FDE7~1\AppData\Local\Temp\ccYndXXD.s:330: Error: unknown opcode `delay3'

C:\Users\FDE7~1\AppData\Local\Temp\ccYndXXD.s:332: Error: unknown opcode `o1bs'

C:\Users\FDE7~1\AppData\Local\Temp\ccYndXXD.s:333: Error: unknown opcode `delay3'

C:\Users\FDE7~1\AppData\Local\Temp\ccYndXXD.s:335: Error: unknown opcode `o1bs'

C:\Users\FDE7~1\AppData\Local\Temp\ccYndXXD.s:336: Error: unknown opcode `delay3'

C:\Users\FDE7~1\AppData\Local\Temp\ccYndXXD.s:338: Error: unknown opcode `o1bs'

C:\Users\FDE7~1\AppData\Local\Temp\ccYndXXD.s:339: Error: unknown opcode `delay3'

C:\Users\FDE7~1\AppData\Local\Temp\ccYndXXD.s:341: Error: unknown opcode `o1bs'

C:\Users\FDE7~1\AppData\Local\Temp\ccYndXXD.s:342: Error: unknown opcode `delay3'

C:\Users\FDE7~1\AppData\Local\Temp\ccYndXXD.s:344: Error: unknown opcode `o1bs'

C:\Users\FDE7~1\AppData\Local\Temp\ccYndXXD.s:345: Error: unknown opcode `delay3'

C:\Users\FDE7~1\AppData\Local\Temp\ccYndXXD.s:347: Error: unknown opcode `o1bs'

C:\Users\FDE7~1\AppData\Local\Temp\ccYndXXD.s:350: Error: unknown opcode `delay2'

C:\Users\FDE7~1\AppData\Local\Temp\ccYndXXD.s:352: Error: unknown opcode `o1bs'

C:\Users\FDE7~1\AppData\Local\Temp\ccYndXXD.s:353: Error: unknown opcode `svprt'

C:\Users\FDE7~1\AppData\Local\Temp\ccYndXXD.s:355: Error: unknown opcode `o1bs'

lto-wrapper: C:\Users\Миха\AppData\Local\Arduino15\packages\arduino\tools\avr-gcc\4.9.2-atmel3.5.3-arduino2/bin/avr-gcc returned 1 exit status

c:/users/миха/appdata/local/arduino15/packages/arduino/tools/avr-gcc/4.9.2-atmel3.5.3-arduino2/bin/../lib/gcc/avr/4.9.2/../../../../avr/bin/ld.exe: lto-wrapper failed

collect2.exe: error: ld returned 1 exit status

exit status 1
Ошибка компиляции.

 

Если же закомментить вызов данной процедуры, то все нормально компилируется.

arduino uno(CH340G), Ide 1.6.7, Win 10

#include <SoftwareSerial.h>
#include <TVout.h>
#include <fontALL.h>

SoftwareSerial mySerial(10, 11); // RX, TX

TVout TV;

/*
  struct weather_structure {
  const char* descript;
  float temp;
  float pressureHPA;
  float pressureMMHG;
  byte  humidity;
  float speed;
  float deg;
  };
*/

//weather_structure weather;

String weather[7];
String Data;
char DataChar;
bool DataBool = false;
bool writer = false;

void Tin() {
  /*
    Data = weather[i];
    for (int z = 0; z < Data.length(); z++)
    TV.print(Data[z]);
  */
}


void writeData() {
  if (writer == false) {
    Serial.println(Data);
    writer = true;

    TV.clear_screen();
    Serial.println("Weather");
    TV.select_font(font8x8);
    TV.println("Weather");
    TV.select_font(font4x6);
    TV.delay(2000);
    TV.clear_screen();


    Serial.print("description: ");
    Serial.println(weather[0]);
    TV.print("description: ");
    Tin();//ТОТ САМЫЙ ВЫЗОВ
    TV.println();


    Serial.print("temp: ");
    Serial.print(weather[1]);
    Serial.println(" celsius");
    TV.print("temp: ");
    //TVprint(1);
    TV.println(" celsius");


    Serial.print("humidity: ");
    Serial.println(weather[2]);
    TV.print("humidity: ");
    //TVprintln(weather[2]);


    Serial.print("pressure: ");
    Serial.print(weather[3]);
    Serial.print(" hPa or ");
    Serial.print(weather[4]);
    Serial.println(" mmHg");
    TV.print("pressure: ");
    //TVprint(weather[3]);
    TV.print(" hPa or ");
    //TVprint(weather[4]);
    TV.println(" mmHg");


    Serial.print("wind's speed: ");
    Serial.print(weather[5]);
    Serial.println(" kmph");
    TV.print("wind's speed: ");
    //TVprint(weather[5]);
    TV.println(" kmph");


    Serial.print("wind's direction: ");
    Serial.print(weather[6]);
    Serial.println(" degrees");
    TV.print("wind's direction: ");
    //TVprint(weather[6]);
    TV.println(" degrees");
  }
}


void setup() {
  // Open serial communications and wait for port to open:
  delay(1000);
  Serial.begin(9600);
  while (!Serial) {
    ; // wait for serial port to connect. Needed for native USB port only
  }


  // set the data rate for the SoftwareSerial port
  mySerial.begin(9600);

  TV.begin(NTSC, 120, 96);
  TV.select_font(font8x8);
  TV.println("Weather Loading");
  TV.select_font(font4x6);
}

void loop() { // run over and over
  if (mySerial.available()) {
    while (DataChar != '#') {
      DataChar = (char)mySerial.read();
      if (DataBool == true)
        Data = Data + DataChar;
      else if (DataChar == '!')
        DataBool = true;
    }
    int j = 2;
    for (int i = 0; i < 7; i++) {
      while (Data[j] != '&') {
        weather[i] = weather[i] + Data[j];
        j++;
      }
      j++;
    }
    writeData();
  }

}

Программа получает инфу с esp через softSerial, разбирает её и должна вывести на монитор

Valera19701
Valera19701 аватар
Offline
Зарегистрирован: 18.10.2015

строка 31 , откуда берется номер элемента в массиве "i" ?

MixaGeek
Offline
Зарегистрирован: 08.09.2016

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

Valera19701
Valera19701 аватар
Offline
Зарегистрирован: 18.10.2015

в строке 63 "1" а там "i"

MixaGeek
Offline
Зарегистрирован: 08.09.2016

прост надо поменять для этого Tin() на Tin(int i), хотя какая разница, это все комментарии, они и так не используются, можно считать, что Tin выглядит так: Tin(){} 

Проблема в том, что если закомментить строку 55, то компилится, а если не комментить, то вылетает ошибка

Valera19701
Valera19701 аватар
Offline
Зарегистрирован: 18.10.2015

MixaGeek пишет:

прост надо поменять для этого Tin() на Tin(int i), хотя какая разница, это все комментарии, они и так не используются, можно считать, что Tin выглядит так: Tin(){} 

а что тогда от нас надо, если вам не нужна эта функция, закоменьте ее

Tin() и  Tin(int i) разные функции

MixaGeek
Offline
Зарегистрирован: 08.09.2016

А строки 31 и 63 закомментированы, их не видит компилятор, а функция мне нужна, просто ошибка возникает независимо от того, что функция принимает и чем она наполнена

MixaGeek
Offline
Зарегистрирован: 08.09.2016

Только что создал новую процедуру func1 и, закомментив Tin(), вызвал ее из loop(). Результат - та же ошибка.

void func1() {

}
Valera19701
Valera19701 аватар
Offline
Зарегистрирован: 18.10.2015

тогда так

#include <SoftwareSerial.h>
#include <TVout.h>
#include <fontALL.h>

SoftwareSerial mySerial(10, 11); // RX, TX

TVout TV;

/*
  struct weather_structure {
  const char* descript;
  float temp;
  float pressureHPA;
  float pressureMMHG;
  byte  humidity;
  float speed;
  float deg;
  };
*/

//weather_structure weather;

String weather[7];
String Data;
char DataChar;
bool DataBool = false;
bool writer = false;

void Tin(int i) {
  
    Data = weather[i];
    for (int z = 0; z < Data.length(); z++)
    TV.print(Data[z]);
  
}


void writeData() {
  if (writer == false) {
    Serial.println(Data);
    writer = true;

    TV.clear_screen();
    Serial.println("Weather");
    TV.select_font(font8x8);
    TV.println("Weather");
    TV.select_font(font4x6);
    TV.delay(2000);
    TV.clear_screen();


    Serial.print("description: ");
    Serial.println(weather[0]);
    TV.print("description: ");
    Tin(0);//ТОТ САМЫЙ ВЫЗОВ
    TV.println();


    Serial.print("temp: ");
    Serial.print(weather[1]);
    Serial.println(" celsius");
    TV.print("temp: ");
   Tin(1) // итак далее
    TVprint(1);
    TV.println(" celsius");


    Serial.print("humidity: ");
    Serial.println(weather[2]);
    TV.print("humidity: ");
    //TVprintln(weather[2]);


    Serial.print("pressure: ");
    Serial.print(weather[3]);
    Serial.print(" hPa or ");
    Serial.print(weather[4]);
    Serial.println(" mmHg");
    TV.print("pressure: ");
    //TVprint(weather[3]);
    TV.print(" hPa or ");
    //TVprint(weather[4]);
    TV.println(" mmHg");


    Serial.print("wind's speed: ");
    Serial.print(weather[5]);
    Serial.println(" kmph");
    TV.print("wind's speed: ");
    //TVprint(weather[5]);
    TV.println(" kmph");


    Serial.print("wind's direction: ");
    Serial.print(weather[6]);
    Serial.println(" degrees");
    TV.print("wind's direction: ");
    //TVprint(weather[6]);
    TV.println(" degrees");
  }
}


void setup() {
  // Open serial communications and wait for port to open:
  delay(1000);
  Serial.begin(9600);
  while (!Serial) {
    ; // wait for serial port to connect. Needed for native USB port only
  }


  // set the data rate for the SoftwareSerial port
  mySerial.begin(9600);

  TV.begin(NTSC, 120, 96);
  TV.select_font(font8x8);
  TV.println("Weather Loading");
  TV.select_font(font4x6);
}

void loop() { // run over and over
  if (mySerial.available()) {
    while (DataChar != '#') {
      DataChar = (char)mySerial.read();
      if (DataBool == true)
        Data = Data + DataChar;
      else if (DataChar == '!')
        DataBool = true;
    }
    int j = 2;
    for (int i = 0; i < 7; i++) {
      while (Data[j] != '&') {
        weather[i] = weather[i] + Data[j];
        j++;
      }
      j++;
    }
    writeData();
  }

}

 

MixaGeek
Offline
Зарегистрирован: 08.09.2016

Это и без тебя ясно. программа крашится при хотя бы одном использовании процедуры Tin()

Valera19701
Valera19701 аватар
Offline
Зарегистрирован: 18.10.2015

меняй версию IDE на более старую, может библиотеки совсем устаревшие

MixaGeek
Offline
Зарегистрирован: 08.09.2016

При чем тут библиотеки? Если даже при пустой функции крашится

Valera19701
Valera19701 аватар
Offline
Зарегистрирован: 18.10.2015

значит удаляй временные файлы IDE, проверь версию Java если установлена

MixaGeek
Offline
Зарегистрирован: 08.09.2016

Проблема возникает только в этой программе. Другие нормально работают. Я думаю тут какой-то конфликт

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

Тут разные коды ошибок:

у меня: collect2.exe: error: ld returned 1 exit status

у них:  collect2.exe: error: ld returned 5 exit status

К тому же у меня примеры работают нормально

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

Попробуйте заменить ld.exe, как там советуют.

MixaGeek
Offline
Зарегистрирован: 08.09.2016

Я взял arduino 105. Теперь все компилируется, но на тв не выводится

PS: в ардуино 1.6.11 тоже не работает

NoLimit
Offline
Зарегистрирован: 24.12.2017

у меня такая же проблема,

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

 

AlexNemo
Offline
Зарегистрирован: 10.09.2020

Потверждаю. Имел конфликт #include <TVout.h>  и  #include <mcp_can.h>.

Решил отключением  #include <TVout.h> (за не очень большой нуждой))