我正在尝试从google导入和使用cbrotli实现,如下所示:

import (
    "fmt"
    "io/ioutil"

    cbrotli "github.com/google/brotli/go/cbrotli"
)

但是尝试运行程序时出现以下错误:
learn-go [master●●] % CGO_CFLAGS="-I /dev/projects/go/learn-go/src/brotli/c/include/brotli" go run cmd/compress/main.go
# github.com/google/brotli/go/cbrotli
src/github.com/google/brotli/go/cbrotli/reader.go:13:10: fatal error: 'brotli/decode.h' file not found
#include <brotli/decode.h>

我不确定如何传递一些C标志以确保可以使用brotli实现

最佳答案

假设您已经构建了brotli,如果尚未构建,请在其Github页面中提供安装说明:

$ mkdir out && cd out
$ ../configure-cmake
$ make
$ make test
$ make install

在构建Go应用程序时,您只需要传递-I ~<prefix>/include,其中<prefix>是您安装brotli的头文件的位置。如果未配置此前缀,则通常在/usr/local中。

之后,您可以使用以下命令运行:
$ CGO_FLAGS='-I <prefix>/include' CGO_FLAGS='-L <prefix>/lib' LD_LIBRARY_PATH='<prefix>/lib' go run cmd/compress/main.go

注意:不需要在CGO_FLAGS的末尾添加“brotli”

10-01 11:53