首先确认Golang是否安装成功,运行go version查看版本信息。若未安装,可通过以下两种方式安装:
/usr/local目录,编辑~/.bashrc(或~/.bash_profile)添加:export GOROOT=/usr/local/go
export GOPATH=$HOME/go
export PATH=$PATH:$GOROOT/bin:$GOPATH/bin
运行source ~/.bashrc使配置生效。yum install golang安装。使用Go Modules管理依赖(推荐开启GO111MODULE=on),运行go mod tidy自动下载缺失的依赖项并清理未使用的依赖。若依赖库需要系统级库(如libcurl),需提前安装对应开发包:
sudo yum install libcurl-devel
若pkg-config不可用,手动设置INCLUDE_DIR和LIB_DIR(如R CMD INSTALL --configure-vars='INCLUDE_DIR=/usr/include:${INCLUDE_DIR}' LIB_DIR=/usr/lib64 ${src}')。
CentOS 7编译的程序若要在CentOS 6上运行,可能因glibc版本过高导致“version `GLIBC_2.x’ not found”错误。解决方法:
若代码中存在循环导入(如包A导入包B,包B又导入包A),编译时会报错。解决方法:
若需为其他平台(如Windows、ARM)编译,需设置GOOS(目标操作系统)和GOARCH(目标架构)环境变量。例如:
GOOS=linux GOARCH=amd64 go build -o myapp;GOOS=windows GOARCH=amd64 go build -o myapp.exe。GOOS和GOARCH是否匹配目标系统。有时构建缓存会导致奇怪的错误(如“file exists”“invalid memory address”),运行go clean -cache清理缓存后重新编译,可解决此类问题。
若打包后的二进制文件无法执行,提示“cannot execute binary file”,多为权限不足。运行chmod +x myapp赋予执行权限,再尝试运行。
若以上方法均无法解决,需仔细阅读打包时的错误信息(如语法错误、未定义变量、依赖冲突),根据提示定位代码问题。也可将错误信息复制到搜索引擎(如Stack Overflow),查找类似案例的解决方案。