我想给 vision five 2 装个 web 服务器 caddy,结果发现它不提供 RISC-V 版的可执行文件下载。
那就只能自己编译咯,毕竟是开源应用嘛。
由于机器上也没有装 Go,所以我选择用其它的设备来交叉编译。
我编译的设备是 d2550,没想到它还能在这种地方发光发热。
docker run -it golang:alpine3.17 |
/go # go version |
用 docker 可以很方便就拥有一个可编译的环境,那么接着需要下载代码,下载需要使用到 wget,由于我下载了 zip 压缩包,所以还得装一个 unzip,如果下载 tar 包就不用了。
apk add wget upzip |
解压出来一个 caddy-2.6.4 的目录,那么进入这个目录,再进入 cmd/caddy
go env -w GOPROXY=https://goproxy.cn |
编译完成就会多出一个名为 caddy 的文件,不过这样编译的是 amd64 版的,我想要编译 RISC-V 版。
CGO_ENABLE=0 GOOS=linux GOARCH=riscv64 go build |
这样编译之后,caddy 这个文件就变成 RISC-V 版的了,使用 file 命令可以查看
apk add file |
此时这个文件是在 docker 容器中的,我们可以使用 docker cp 命令将它复制出来。这里我是多开一个 ssh 标签。
需要先去查一下容器的 ID,用 docker ps,我这里查到是 bb95e6bfb7e9
,然后像这样复制出来。
docker cp bb95e6bfb7e9:/go/caddy-2.6.4/cmd/caddy/caddy . |
之后再想办法将它传到 RISC-V 开发板上。这一切完成之后,可以直接把容器删掉,甚至把镜像也删掉也行,不会生出多余的文件,很不错。