项目背景:confluent-kafka-go 客户端 接入项目,
https://github.com/confluentinc/confluent-kafka-go/blob/master/README.md
根据这个文档说的,macOS 可以直接编译生成 linux 运行的可执行文件,
执行:CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build
可是会报

后来发现 librdkafka 是基于C的,所以需要开启CGO_ENABLED
执行:CGO_ENABLED=1 GOOS=linux GOARCH=amd64 go build
还是会报:

经过搜索发现,os本身系统库不兼容的问题,需要安装linux的编译环境
执行:brew install FiloSottile/musl-cross/musl-cross
安装完成以后执行:
CGO_ENABLED=1 GOOS=linux GOARCH=amd64 go build
还是不行:需要指定环境变量
执行:CGO_ENABLED=1 GOOS=linux GOARCH=amd64 CC=x86_64-linux-musl-gcc CXX=x86_64-linux-musl-g++ go build
报了一大堆看不懂的错误,然后又花了很久时间去查,没有结果。。。

最终我又回到官方文档,

虽然刚开始是macOS,但是现在我刚刚就是搭建了musl libc这个编译环境,
所以执行:
CGO_ENABLED=1 GOOS=linux GOARCH=amd64 CC=x86_64-linux-musl-gcc CXX=x86_64-linux-musl-g++ go build -tags musl
终于成功了
把可执行文件上传到服务器去执行,报:
No such file or directory
我以为我的文件名写错了,以为我的命令写错了,以为.....
最后又回到这里

安装环境:
wget https://copr.fedorainfracloud.org/coprs/ngompa/musl-libc/repo/epel-7/ngompa-musl-libc-epel-7.repo -O /etc/yum.repos.d/ngompa-musl-libc-epel-7.repo
yum install -y musl-libc-static
在服务器上安装环境之后,终于成功启动了
但其实我差不多花了一天的时间才解决掉这个问题
继续下一个问题。。。。
网友评论