发布于2026-07-27 阅读(0)
扫一扫,手机访问
在CentOS下用Go语言打包静态库,其实操作起来并不复杂,步骤也很清晰。下面就把整个流程拆开来讲,每一步都配上了代码,照着做就行。

首先要确保系统里有Go。如果还没装,直接用yum搞定:
sudo yum install golang
装完后可以用 go version 验证一下,确认安装成功。
新建一个目录,比如叫 mylib,然后进去,初始化Go模块:
mkdir mylib
cd mylib
go mod init mylib
这个模块名可以自定义,但后面编译时保持一致就行。
在项目目录里创建一个 .go 文件,比如 lib.go,把你要暴露给C调用的函数写进去。注意要加上 import "C" 和 //export 注释,这样Go编译器才知道哪些函数需要导出。
// lib.go
package mylib
import "C"
//export Add
func Add(a, b int) int {
return a + b
}
func main() {}
这里的 main() 函数是空的,但必须保留,因为Go要求可执行包必须有 main 函数,而静态库正是基于这种模式生成的。
核心命令来了:用 go build 加上 -buildmode=c-archive 参数,就会生成一个静态库文件和一个C头文件。
go build -o libmylib.a -buildmode=c-archive lib.go
执行完后,你会看到两个产物:
libmylib.a —— 静态库文件libmylib.h —— C头文件,里面包含了导出函数的声明头文件里的内容会自动生成,不需要手动写,非常方便。
现在把 libmylib.a 和 libmylib.h 复制到你的C项目目录里,然后写一个C文件来调用它。比如创建 main.c:
#include
#include "libmylib.h"
int main() {
int result = Add(3, 4);
printf("Result: %d\n", result);
return 0;
}
编译时链接静态库:
gcc -o main main.c -L. -lmylib
这里 -L. 表示当前目录,-lmylib 会链接 libmylib.a(注意去掉前面的 lib 和后面的 .a)。
最后运行生成的可执行文件:
./main
输出结果:
Result: 7
大功告成。整个过程就是“安装Go → 写代码 → 编译成静态库 → 在C里调用”,没有太多弯弯绕绕。关键点在于 -buildmode=c-archive 这个参数,以及 //export 注释的正确写法。只要这两步不出错,其他都是水到渠成的事。
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
正版软件
正版软件
正版软件
正版软件
正版软件
1
2
3
7
8