golang交叉编译运行在小米ac2100 mips架构的可执行文件

最近咸鱼45包邮收了一台小米ac2100用来做ap,米系设备还是可以的,预留好了漏洞给刷openwrt,openwrt也直接官方提供了方案:
https://openwrt.org/toh/xiaomi/mi_router_ac2100

搞定后发现CPU为MT7621,是个mips架构的cpu,openwrt软件源里木有sing-box,只能手动编译下了

编译注意点:

  1. MT7621为mipsle,也就是little end,golang里mips默认是大端,需要指定GOARCH=mipsle
  2. MT7621没有浮点计算单元fpu,编译时需要指定下软件模拟浮点GOMIPS=softfloat
  3. 可以通过指定-ldflags="-w -s"去除调试信息减小文件体积
  4. 如果嫌文件还大,可以再用upx处理下
  5. sing-box提供了很多编译选项开启或关闭某些功能支持,可以用tags指定,这里我选择全都不要

具体命令就是

$ GOOS=linux GOARCH=mipsle GOMIPS=softfloat CGO_ENABLED=0 go build -ldflags="-w -s" -tags="" ./cmd/sing-box
$ upx sing-box

最后的可执行文件在4.5m左右,还是可以的

此处评论已关闭