TinyGo是一个适用于小型环境(如微控制器、WebAssembly (Wasm) 和命令行工具)的Go编译器。它重用Go语言工具库和LLVM,提供另一种编译Go程序的方式,旨在生成小型二进制文件并支持资源受限的设备。
gc一样快(但LLVM可能在某些优化上更优,如数值计算)TinyGo可编译程序至微控制器、WebAssembly和Linux。目前支持以下62种微控制器板:
更多信息请参见支持的开发板列表。欢迎提交拉取请求以支持更多开发板!
有关安装TinyGo以及使用Docker容器运行TinyGo编译器的信息,请参见入门指南。
以下是一个控制内置LED闪烁的示例程序,可直接在任何支持的带内置LED的开发板上运行:
gopackage main import ( "machine" "time" ) func main() { led := machine.LED led.Configure(machine.PinConfig{Mode: machine.PinOutput}) for { led.Low() time.Sleep(time.Millisecond * 1000) led.High() time.Sleep(time.Millisecond * 1000) } }
上述程序无需修改即可在Arduino Uno、Adafruit ItsyBitsy M0或任何其他支持的带内置LED的开发板上编译和运行,只需设置正确的TinyGo编译器目标。例如,编译并烧录到Arduino Uno:
shelltinygo flash -target arduino examples/blinky1
有关当前支持的Go语言特性的描述,请参见语言支持。
文档位于官方网站:[***]
网站代码托管在https://github.com/tinygo-org/tinygo-site%E3%80%82
如果您需要更互动的方式讨论TinyGo的使用或开发,可加入Gophers Slack上的#TinyGo频道。
如需Gophers Slack邀请,可通过此处生成,通常会很快(1分钟内)收到。
欢迎您的贡献!
详情请参见CONTRIBUTING.md文档。
我们从未期望Go成为嵌入式语言,因此它存在一些严重问题……
—— Rob Pike,GopherCon 2014开幕主题演讲
TinyGo旨在将Go引入微控制器和单处理器核心的小型系统。它与https://github.com/ziutek/emgo%E7%B1%BB%E4%BC%BC%EF%BC%8C%E4%BD%86%E4%B8%BB%E8%A6%81%E5%8C%BA%E5%88%AB%E5%9C%A8%E4%BA%8ETinyGo%E5%B8%8C%E6%9C%9B%E4%BF%9D%E7%95%99Go%E5%86%85%E5%AD%98%E6%A8%A1%E5%9E%8B%EF%BC%88%E8%BF%99%E6%84%8F%E5%91%B3%E7%9D%80%E9%9C%80%E8%A6%81%E6%9F%90%E7%A7%8D%E5%9E%83%E5%9C%BE%E5%9B%9E%E6%94%B6%EF%BC%89%E3%80%82%E5%8F%A6%E4%B8%80%E4%B8%AA%E5%8C%BA%E5%88%AB%E6%98%AFTinyGo%E5%86%85%E9%83%A8%E4%BD%BF%E7%94%A8LLVM%E8%80%8C%E9%9D%9E%E7%94%9F%E6%88%90C%E4%BB%A3%E7%A0%81%EF%BC%8C%E8%BF%99%E6%9C%89%E6%9C%9B%E7%94%9F%E6%88%90%E6%9B%B4%E5%B0%8F%E3%80%81%E6%9B%B4%E9%AB%98%E6%95%88%E7%9A%84%E4%BB%A3%E7%A0%81%EF%BC%8C%E5%B9%B6%E6%8F%90%E4%BE%9B%E6%9B%B4%E5%A4%A7%E7%9A%84%E7%81%B5%E6%B4%BB%E6%80%A7%E3%80%82
最初的想法是:如果Python可以在微控制器上运行,那么Go当然也能在更低级的微控制器上运行。
本项目采用BSD 3条款许可证,与Go项目相同。
部分代码从LLVM项目复制而来,因此采用Apache 2.0许可证变体。这些文件的头部已明确注明。
部分代码从Paul Stoffregen的Teensy库复制和/或移植而来,因此采用PJRC许可证。这些文件的头部已明确注明。
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
无需登录使用专属域名
Kubernetes 集群配置 Containerd
K3s 轻量级 Kubernetes 镜像加速
VS Code Dev Containers 配置
Podman 容器引擎配置
HPC 科学计算容器配置
ghcr、Quay、nvcr 等镜像仓库
Harbor Proxy Repository 对接专属域名
Portainer Registries 加速拉取
Nexus3 Docker Proxy 内网缓存
需要其他帮助?请查看我们的 常见问题Docker 镜像访问常见问题解答 或 提交工单
docker search 限制
站内搜不到镜像
离线 save/load
插件要用 plugin install
WSL 拉取慢
安全与 digest
新手拉取配置
镜像合规机制
不支持 push
manifest unknown
no matching manifest(架构)
invalid tar header(解压)
TLS 证书失败
DNS 超时
域名连通性排查
410 Gone 排查
402 与流量用尽
401 认证失败
429 限流
D-Bus 凭证提示
413 与超大单层
来自真实用户的反馈,见证轩辕镜像的优质服务