# 简介 输出gcl中的功能为C库 步骤: - lib.go中编写要输出的函数: ``` //export Sm3 func Sm3(in []byte, out []byte) { d := sm3.Sum(in) copy(out, d[:]) } ``` - 生成go导出的C库(c-archive) ``` go build -buildmode=c-archive -o libgcl_go.a lib.go ``` - lib.c中编写C包装代码 ``` int sm3(void *data, int dataLen, void *digest){ // input check, omit GoSlice in = { data, dataLen, dataLen }; GoSlice out = { digest, 32, 32 }; Sm3(in,out); return 0; } ``` - gcc编译gcl.c为动态库 ``` gcc -shared -o libgcl.dylib -L. -lgcl_go gcl.c ```