在 CentOS 系统中将 Go 代码编译为静态库,操作步骤并不复杂,只需按顺序执行即可。下面先梳理所需的准备工作,再进入详细操作流程。

安装 Go 语言环境——如果系统尚未安装 Go,请前往官网(golang.org/dl)下载与 CentOS 匹配的版本,并按照官方文档完成安装。此步骤非常简单,安装完成后在终端执行
go version确认环境正常即可。配置环境变量:编辑用户主目录下的
.bashrc文件(若不存在则新建一个),并添加以下内容:export GOROOT=/usr/local/go export GOPATH=$HOME/go export PATH=$PATH:$GOROOT/bin:$GOPATH/bin保存文件后,执行
source ~/.bashrc使配置立即生效。请注意,GOPATH路径可根据个人偏好调整,但推荐使用$HOME/go,这是最常用的设置。创建项目目录:在
$GOPATH/src目录下新建一个文件夹,例如命名为mylib:mkdir -p $GOPATH/src/mylib cd $GOPATH/src/mylib当然,你也可以将项目放置于任意位置,但放在
$GOPATH/src下可使 Go 工具链自动识别包路径,避免额外配置。编写 Go 代码:在
mylib目录下创建mylib.go文件,示例内容如下:package mylib import "C" //export MyFunction func MyFunction() { // 你的代码 } func main() {}这里的关键是
import "C"和//export MyFunction注释——前者启用 cgo 特性,后者告知编译器将该函数暴露给 C 语言调用。注意:注释与export之间不能有空格,必须紧密相连。编译静态库:在项目目录下执行以下命令:
CGO_ENABLED=1 go build -o libmylib.a -buildmode=c-archive mylib.go该命令将生成
libmylib.a文件,这是一个标准的 C 静态库。需要特别说明的是,CGO_ENABLED=1环境变量必须显式设置,因为 CentOS 默认可能未开启 cgo,或某些环境下 cgo 被禁用。此外,如果代码中依赖了第三方 Go 包,这些包也会一并打包进.a文件中。
至此,静态库编译完成。接下来,你只需将 libmylib.a 链接到 C 或 C++ 项目中,然后在 C 代码中直接调用 MyFunction 即可(注意在 C 头文件中进行函数声明)。如果是 C++ 项目,请使用 extern "C" 包裹函数声明,以避免名称修饰问题。
