cfanbo / cfanbo.github.io

1 stars 0 forks source link

Golang中的 CGO_ENABLED 环境变量 | 学习笔记 #245

Open cfanbo opened 8 months ago

cfanbo commented 8 months ago

https://blog.haohtml.com//archives/31332

Golang中的编译参数 开发中经常使用 go build 命令来编译我们的程序源码,然后将生成二进制文件直接部署,极其方便。 对于 go build 有一些参数,对于针对程序源码进行一些编译优化,下面我们对经常使用的一些参数来介绍一下。 环境变量 环境变量需要在go命令前面设置,如果多个变量的话,中间需要用“空格”分隔。下面我们介绍一个非常常见到的一些环境变量 $ CGO_ENABLED=1 GOARCH=amd64 GOOS=linux go build -o myserver main.go 除了这里给出的这几个变量外,还有一些其它变量,如 GODEBUG、GOFLAGS、GOPROXY 等,所有支持环境变量都可以在 里找到,有兴趣的话可以看看他们的作用。 这里重点介绍一下 CGO_ENABLED 环境变量对我们程序的影响。 CGO_ENABLED是用来控制golang 编译期间是否支持调用 cgo 命令的开关,其值为1或0,默认情况下值为1,可以用 go env 查看默认值。 如果你的程序里调用了cgo 命令,此参数必须设置为1,否则将编译时出错。这里直接用文档 中的一个例子验证。 package main // #include // #include // // static void myprint(char* s) { // printf("%sn", s); // } import "C" import "unsafe" func main() { cs := C.CString("Hello from stdio") C.myprint(cs) C.