jjzjj

go - 未定义 : SQLiteConn when trying to build go app for armv7

coder 2024-07-06 原文

我必须为 Ubuntu ARM-v7 编译一个 Go 服务

当我编译它时

GOARCH=arm GOARM=7 go build -v -o release/edge_to_bc -ldflags '-s -w -extldflags "-static"' ./...

我得到:

gitlab.com/company/edge_to_bc/vendor/github.com/hyperledger/fabric/bccsp/pkcs11
# gitlab.com/company/edge_to_bc/vendor/github.com/hyperledger/fabric/bccsp/pkcs11
vendor/github.com/hyperledger/fabric/bccsp/pkcs11/impl.go:82:12: undefined: pkcs11.Ctx
vendor/github.com/hyperledger/fabric/bccsp/pkcs11/impl.go:83:16: undefined: pkcs11.SessionHandle
gitlab.com/company/edge_to_bc/vendor/github.com/mattn/go-sqlite3
# gitlab.com/company/edge_to_bc/vendor/github.com/mattn/go-sqlite3
vendor/github.com/mattn/go-sqlite3/sqlite3_go18.go:18:10: undefined: SQLiteConn
vendor/github.com/mattn/go-sqlite3/sqlite3_go18.go:26:10: undefined: SQLiteConn
vendor/github.com/mattn/go-sqlite3/sqlite3_go18.go:27:17: undefined: namedValue
vendor/github.com/mattn/go-sqlite3/sqlite3_go18.go:29:13: undefined: namedValue
vendor/github.com/mattn/go-sqlite3/sqlite3_go18.go:35:10: undefined: SQLiteConn
vendor/github.com/mattn/go-sqlite3/sqlite3_go18.go:44:10: undefined: SQLiteConn
vendor/github.com/mattn/go-sqlite3/sqlite3_go18.go:49:10: undefined: SQLiteConn
vendor/github.com/mattn/go-sqlite3/sqlite3_go18.go:54:10: undefined: SQLiteStmt
vendor/github.com/mattn/go-sqlite3/sqlite3_go18.go:63:10: undefined: SQLiteStmt
vendor/github.com/mattn/go-sqlite3/tracecallback_noimpl.go:8:10: undefined: SQLiteConn
vendor/github.com/mattn/go-sqlite3/sqlite3_go18.go:29:13: too many errors

我该如何解决?

最佳答案

Go-sqlite3 是cgo 包

如果你想使用 go-sqlite3 构建你的应用程序,你需要 gcc。

但是,在使用 go install github.com/mattn/go-sqlite3(需要 gcc)构建并安装 go-sqlite3 之后,您以后可以构建应用程序而无需依赖 gcc。

重要提示:因为这是一个支持 CGO 的包,您需要设置环境变量 CGO_ENABLED=1 并在您的路径中包含一个 gcc 编译

Source

从 Ubuntu 到 ARM7 的交叉编译:

sudo apt install \
 libc6-armel-cross \
 libc6-dev-armel-cross \
 binutils-arm-linux-gnueabi \
 libncurses5-dev \
 gcc-arm-linux-gnueabihf

env CC=arm-linux-gnueabihf-gcc CXX=arm-linux-gnueabihf-g++ \
    CGO_ENABLED=1 GOOS=linux GOARCH=arm GOARM=7 \
    go build -v 

使用 docker 镜像:

# Install docker
$ curl -fsSL https://get.docker.com -o get-docker.sh | sudo sh -
$ sudo usermod -aG docker your-user

# Go to your project folder
$ cd your-project-folder

# Compile
$ docker run --rm \
    -v /tmp/.docker/go:/go \
    -v /tmp/.docker/go-build:/root/.cache/go-build \
    -v $PWD:$PWD \
    -w $PWD \
    filipeandre/go-compiler-to-arm7:1.12 \
    go build -v

Dockerfile

关于go - 未定义 : SQLiteConn when trying to build go app for armv7,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56480838/

有关go - 未定义 : SQLiteConn when trying to build go app for armv7的更多相关文章

随机推荐