news 2026/11/3 2:28:29

toxiproxy 如何编译出 Windows 与 ARM 版本?交叉编译到批量发布全梳理

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
toxiproxy 如何编译出 Windows 与 ARM 版本?交叉编译到批量发布全梳理

toxiproxy 如何编译出 Windows 与 ARM 版本?交叉编译到批量发布全梳理

【免费下载链接】toxiproxy:alarm_clock: :fire: A TCP proxy to simulate network and system conditions for chaos and resiliency testing项目地址: https://gitcode.com/gh_mirrors/to/toxiproxy

toxiproxy 是一款用于模拟异常网络与系统状况的 TCP 代理,也是混沌测试与故障演练的常用工具。下面直接上手:先在你当前的机器上编译并启动服务,再完成 toxiproxy 交叉编译(在当前机器上构建目标平台的二进制),产出 Windows 与 ARM 可执行文件,最后验证产物并用 goreleaser 批量打包。

本地先编译并跑起 toxiproxy-server

环境只要求备齐三样:

  • Go 1.16 及以上
  • Git
  • 需要在 Windows 上产出 .exe 时,安装 MinGW 或 MSYS2

克隆仓库并进入目录即可:

git clone https://gitcode.com/gh_mirrors/to/toxiproxy && cd toxiproxy

仓库自带 Makefile,make build会调用 go build 并去掉调试信息(-ldflags="-s -w"),在dist目录生成toxiproxy-server(服务端)与toxiproxy-cli(命令行客户端)两个二进制:

make build

交叉编译出 Windows .exe 可执行文件

在 Windows 命令行里工作时,先用 set 切换环境变量再执行两条构建,dist下各产出一个 .exe:

set GOOS=windows set GOARCH=amd64 go build -ldflags="-s -w" -o ./dist/toxiproxy-server-windows-amd64.exe ./cmd/server go build -ldflags="-s -w" -o ./dist/toxiproxy-cli-windows-amd64.exe ./cmd/cli

如果你人在 Linux 或 macOS 上就更省事:不用装 Windows 工具链,用 env 前缀指定目标平台即可,加上 CGO_ENABLED=0 可以避免引入依赖 C 的系统库:

env GOOS=windows GOARCH=amd64 CGO_ENABLED=0 go build -ldflags="-s -w" -o ./dist/toxiproxy-server-windows-amd64.exe ./cmd/server

客户端同理,把输出名与入口路径换成./cmd/cli即可。

生成 ARM64 与 ARMv7 二进制:GOOS/GOARCH/GOARM 参数对照

两种 ARM 目标只差 GOARCH 与是否指定 GOARM,构建命令可以完全复用:

目标架构GOOSGOARCHGOARM典型设备
ARM64linuxarm64不设置树莓派 4、AWS Graviton
ARMv7linuxarm7树莓派 3

以 ARM64 为例,服务端命令如下(ARMv7 则设 GOARCH=arm、GOARM=7,输出名改为 -linux-armv7):

env GOOS=linux GOARCH=arm64 CGO_ENABLED=0 go build -ldflags="-s -w" -o ./dist/toxiproxy-server-linux-arm64 ./cmd/server

验证编译产物:版本号与启动检查

产物别编完就直接发。先跑两个检查:--version打印版本号,直接运行则启动服务器。✅ 终端里看到服务器启动消息,即算通过:

./dist/toxiproxy-server --version ./dist/toxiproxy-server

排错速查:高频报错与对应解决办法

⚠️ 构建时卡住,九成是下面两种情况:

现象原因处理办法
交叉编译报undefined: syscall.SYS_SETNSCGO(Go 调用 C 的互操作层)引用了目标平台上不存在的系统调用构建前设CGO_ENABLED=0
Windows .exe 被杀毒软件报毒Go 编译二进制常见的误报用upx ./dist/toxiproxy-server.exe压缩后可降低误报率

用 Goreleaser 批量发布多平台产物

需要一次出齐多个平台的可执行文件时,不用复制粘贴 env 命令——项目已集成 goreleaser 发布工具。先用make release-dry模拟一遍,它会在dist生成多平台产物但不实际推送;验证没问题后再用make release正式发布:

make release-dry

产物就绪后,可以直接丢进测试环境,再到 toxics/ 里看看延迟、带宽等内置网络条件插件,跑通你的第一次混沌演练。

【免费下载链接】toxiproxy:alarm_clock: :fire: A TCP proxy to simulate network and system conditions for chaos and resiliency testing项目地址: https://gitcode.com/gh_mirrors/to/toxiproxy

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/11/3 2:26:37

不用写一行代码:ComfyUI 官方 YuE2 节点从安装到出歌 15 分钟搞定

不用写一行代码:ComfyUI 官方 YuE2 节点从安装到出歌 15 分钟搞定 如果说 2024 年的 AI 音乐还停留在"本地跑脚本、跟依赖斗智斗勇"的阶段,那么 YuE2 的出现算是彻底改变剧本了——香港科技大学与 MAP 联合开源的这一代模型,首次把…

作者头像 李华
网站建设 2026/11/3 2:25:49

HarmonyOS 端侧智能体长对话压缩:摘要版本、证据索引与安全回退

HarmonyOS 端侧智能体长对话压缩:摘要版本、证据索引与安全回退端侧智能体对话变长以后,最常见的故障不是模型“忘了上一句”,而是应用压缩上下文时把正在等待确认的操作、用户刚补充的约束或关键证据一起删掉。另一类问题出现在摘要已经生成…

作者头像 李华
网站建设 2026/11/3 2:24:03

串行通信入门之 UART 通信原理与实际使用

前言随着嵌入式系统与物联网技术的快速发展,设备之间的数据交互越来越依赖串行通信。UART 作为最基础、最常用的异步串行通信协议,是每一位嵌入式开发者必须掌握的核心技能。一、UART 是什么?UART(Universal Asynchronous Receive…

作者头像 李华