在CentOS上编译依赖外部库(如libcurl)的Golang程序时,可能报错“找不到libcurl”。需安装对应开发包:
sudo yum install libcurl-devel
若pkg-config不可用,需手动设置依赖路径(如CGO_CFLAGS、CGO_LDFLAGS)。
CentOS 7的glibc版本较旧,若编译的二进制文件在CentOS 6上运行,可能报错“version `GLIBC_2.x’ not found”。解决方法:
docker pull centos:centos6
docker run -it centos:centos6 /bin/bash
# 在容器内安装Go和必要工具,然后编译
CGO_ENABLED=0),生成静态链接二进制文件。Golang代码中若存在包循环引用(如包A导入包B,包B又导入包A),编译时会报错“import cycle not allowed”。解决方法:
若需将Golang应用打包为RPM部署,需正确配置目录结构和spec文件:
GOOS=linux GOARCH=amd64 go build -o myapp);mkdir -p /rpmbuild/{BUILD,RPMS,SOURCES,SPECS,SRPMS});SOURCES目录并打包(tar -czf myapp.tar.gz myapp);rpmbuild生成RPM包(rpmbuild -bb /rpmbuild/SPECS/myapp.spec)。若GOROOT、GOPATH或PATH设置不当,可能导致“command not found”或依赖无法下载。解决方法:
~/.bashrc(或/etc/profile),添加以下内容:export GOROOT=/usr/local/go # Go安装路径
export GOPATH=$HOME/go # 工作目录
export PATH=$PATH:$GOROOT/bin:$GOPATH/bin # 添加Go命令到PATH
source ~/.bashrc。中国大陆访问golang.org可能被墙,导致go get失败。解决方法:
设置国内代理(如goproxy.cn):
go env -w GOPROXY=https://goproxy.cn,direct
或在~/.bashrc中永久配置。
编译后的二进制文件无执行权限,运行时报错“Permission denied”。解决方法:
chmod +x myapp # 赋予执行权限
若使用过旧或过新的Go版本,可能导致语法或依赖不兼容。解决方法:
go version检查当前版本;yum更新)。