沙滩星空的博客沙滩星空的博客

Go语言跨平台交叉编译OpenWrt软路由系统应用

起因

自己用Go语言写了个TCP服务器应用,在阿里云和本地WSL2的 Debian 运行正常。
现打算在本地电脑的Windows环境下,把这个Go项目,跨平台编译成 OpenWrt 软路由操作系统的二进制可执行文件。

更改环境变量

网上百度说 OpenWrt 是 mipsle 架构,故设置环境变量 set GOARCH=mipsle

# 设置操作系统
set GOOS=linux
# 设置平台架构
set GOARCH=mipsle
# 不依赖现有的C库动态链接库,独立打包
# 使用ldd命令可查看可执行文件依赖的动态链接库
set CGO_ENABLED=0

跨平台交叉编译

go build -ldflags "-s -w" -o outfile .

结果运行编译后的文件时报错: syntax error: unexpected ")"
发现可能是把目标操作系统的架构搞错了。

OpenWrt 软路由操作系统,输入查看 Linux 系统信息的通用命令:

uname -a

输出:

Linux OpenWrt 6.1.22 #0 SMP PREEMPT_DYNAMIC Fri Mar 31 05:34:43 2023 x86_64 GNU/Linux

居然是 x86_64,和工作时接触最多的Linux服务器系统常见架构一样。也就是 amd64

更改环境变量,重新编译后,便可在 OpenWrt 软路由系统上正常运行了:

set GOARCH=amd64

golang 交叉编译 https://yikakia.github.io/golang-交叉编译/
CGO_ENABLED、GOOS、GOARCH、CC相关参数详解 https://blog.csdn.net/qq_36657175/article/details/124024503
openwrt上部署go web项目 https://blog.csdn.net/weixin_45254641/article/details/114460997
Go 静态编译机制 https://blog.csdn.net/qq_43580193/article/details/120305231
Golang交叉编译之跨平台编译使用详解 https://www.jb51.net/article/264383.htm
未经允许不得转载:沙滩星空的博客 » Go语言跨平台交叉编译OpenWrt软路由系统应用

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址