1.配置CGO_ENABLED为1
go env -w CGO_ENABLED=1
2.安装gcc环境,否则出现cgo: C compiler "gcc" not found: exec: "gcc": executable file not found in %PATH%错误
安装包:链接:https://pan.baidu.com/s/1sgF9lijqGePnFLiiixt4Zg?pwd=am7z
提取码:am7z。也可以官网下载自己想要版本。
3.配置环境变量,将gcc的路径添加添加到path,步骤如下。
添加路径到path。
4. 若出现一下错误
# runtime/cgo
gcc_linux_amd64.c: In function '_cgo_sys_thread_start':
gcc_linux_amd64.c:57:2: error: unknown type name 'sigset_t'; did you mean '_sigset_t'?
sigset_t ign, oset;
......
可以设置GOOS=windows
go env -w GOOS=windows
5.简单例子
- 文件目录
- 文件内容
// main.go package main /* #cgo CFLAGS: -I${SRCDIR} #cgo LDFLAGS: -L${SRCDIR} -lhello #include "hello.h" int Add(int a, int b) { return a + b; } */ import "C" // 注意C代码和 import "C" 之间不可存在空行 import "fmt" func main() { a := C.int(10) b := C.int(20) c := C.Add(a, b) fmt.Println(c) // 30 C.SayHello() }
// hello.c #include <stdio.h> #include "hello.h" void SayHello() { printf("Hello, cgo!\n"); }
// hello.h void SayHello();
- 编译成库
gcc -c hello.c ar -crv libhello.a hello.o
- 运行