bigoat 发表于 2015-6-12 00:23:23

编译错误: crtm2560.o:(.init9+0x0): undefined reference to `main' collect2.exe...

##在arduino在1.6.4版本编译出错:




Arduino:1.6.4 (Windows 7), 板:"Arduino Mega or Mega 2560, ATmega2560 (Mega 2560)"

c:/program files/arduino/hardware/tools/avr/bin/../lib/gcc/avr/4.8.1/../../../../avr/lib/avr6/crtm2560.o:(.init9+0x0): undefined reference to `main'
collect2.exe: error: ld returned 1 exit status

##高版本不支持文件名为 mian.ino 的工程名,di
##估计是编译时导致与系统生成的文件冲突,
##解决方案在高版本上不要命名为main.ino
##虽然定义int main() 函数可以编译通过但是程序入口改为main函数,烧录运行时串口输出不正常

Super169 发表于 2015-6-12 02:00:14

main 本身是 c/c++ 中 reserve 了特別用途.
而 arduino IDE 中亦定義了 main, 而 setup() 及 loop() 都是由 main 觸發的:



#include <Arduino.h>

//Declared weak in Arduino.h to allow user redefinitions.
int atexit(void (*func)()) { return 0; }

// Weak empty variant initialization function.
// May be redefined by variant files.
void initVariant() __attribute__((weak));
void initVariant() { }

int main(void)
{
        init();

        initVariant();

#if defined(USBCON)
        USBDevice.attach();
#endif
       
        setup();
   
        for (;;) {
                loop();
                if (serialEventRun) serialEventRun();
        }
      
        return 0;
}

suoma 发表于 2015-6-12 15:14:15

Super169 发表于 2015-6-12 02:00 static/image/common/back.gif
main 本身是 c/c++ 中 reserve 了特別用途.
而 arduino IDE 中亦定義了 main, 而 setup() 及 loop() 都是由 ...

                学习了
页: [1]
查看完整版本: 编译错误: crtm2560.o:(.init9+0x0): undefined reference to `main' collect2.exe...