最近有一个用户反馈, 他使用 golang:1.13.1-alpine3.10 这个镜像来编译的可执行程序无法在云函数的环境运行, 报错信息如下:
fork/exec /var/user/main: no...Go 程序链接出错的信息, 看起来也是在 Alpine Linux 下编译的, 有人回复道 Alpine Linux 使用的不是 glibc
啊哈, 终于有线索了, 写代码验证一下
package main..., 和我们的问题很类似
package main
import (
"net"
"fmt"
"os"
)
func main() {
ips, err := net.LookupIP("localhost...64.so.2 (0x00007f6c4b6d9000)
终于和 glibc 扯上关系了
使用 golang:1.13.1-alpine3.10 这个镜像重新编译一下这段代码, 看看结果有什么不同
$ docker...(完整的出错信息可通过使用 Go 的 os/exec 包启动 main-alpine 获得)
解决方案
问题的原因在于云函数的运行环境(CentOS)提供的是 glibc, 而 Alpine Linux