我正在尝试导入并使用谷歌的cbrotli实现,如下所示:
import (
"fmt"
"io/ioutil"
cbrotli "github.com/google/brotli/go/cbrotli"
)
Run Code Online (Sandbox Code Playgroud)
但是在尝试运行程序时出现以下错误:
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>
Run Code Online (Sandbox Code Playgroud)
我不知道如何传递一些C标志以确保我可以使用brotli实现
假设你已经构建了brotli,如果没有,在他们的Github页面中有一个安装说明:
$ mkdir out && cd out
$ ../configure-cmake
$ make
$ make test
$ make install
Run Code Online (Sandbox Code Playgroud)
在构建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
Run Code Online (Sandbox Code Playgroud)
注意:您不需要在结尾处添加"brotli"CGO_FLAGS