最大的区别莫过于不能运行,原因总结如下:

  1. 原生Go编译器对嵌入式设备的指令支持不完善,例如Thumb、AVR等
  2. Go编译后因为包含Go runtime代码(GC、Goroutine、reflect等)导致代码体积非常大;
  3. Go runtime动态内存管理,内存分配空间大,很多嵌入式设备可能承受不了;
  4. CGO程序依赖于glibc,很多嵌入式设备glibc支持不完备;

tinygo就是面向嵌入式设备的go 编译器,只不过支持有限功能集。

参考: