Skip to content

Go语言常见问题之什么是CGO #201

Description

@WGrape

1、介绍

CGO是Go语言的一种特性,这种特性允许在Go代码中直接调用C代码,

要注意的是 CGO 可不是像 GCC 一样的东西

2、如何使用CGo

如果在Go代码中出现了import "C"语句则表示开启并使用了CGO特性,这样在进行go build命令时,就会在编译和连接阶段启动gcc编译器。

紧跟在这行语句前面的注释是一种特殊语法,里面包含的是正常的C语言代码。当确保CGO启用的情况下,还可以在当前目录中包含C/C++对应的源文件。

package main

/*
#include <stdio.h>

void printint(int v) {
    printf("printint: %d\n", v);
}
*/
import "C"

func main() {
    v := 42
    C.printint(C.int(v))
}

3、Go build

在使用Go build的时候,通常会使用到 CGO_ENABLED / GOOS / GOARCH 这些构建选项。

CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o ProjectName  ../main.go 

有些项目由于会使用到CGO特性,所以在构建的时候会要求必须开启CGO,如confluent-kafka-go

image

Metadata

Metadata

Assignees

No one assigned

    Labels

    Go常见问题系列分享在工作中常遇到的一些Go语言问题

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions