首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >非常慢的带有go 3 CGO支持包的坞构建

非常慢的带有go 3 CGO支持包的坞构建
EN

Stack Overflow用户
提问于 2021-07-20 14:36:56
回答 1查看 583关注 0票数 0

由于我已经将go-sqlite3作为依赖项安装在go项目中,所以我的码头构建时间开始在1分钟左右振荡。

我试图通过使用go mod download缓存依赖项来优化构建,但它并没有减少整个构建时间。

然后我发现

go-sqlite3 3是一个启用CGO的包,您需要设置环境变量CGO_ENABLED=1,并且在您的路径中有一个gcc编译。

因此,我运行go install github.com/mattn/go-sqlite3作为额外的步骤,它将构建时间减少到17s~

我也试过了一些建议,但这对减少构建时间没有帮助,所以明确地安装库是实现这一目标的必要条件。

代码语言:javascript
复制
## Build
FROM golang:1.16-buster AS build
WORKDIR /app
 
# Download dependencies
COPY go.mod .
COPY go.sum .
RUN go mod download

RUN go install github.com/mattn/go-sqlite3 //this reduced build time to around 17s~

COPY . .

RUN go build -o /myapp

但不知何故,我还是不满意这个解决办法。我不明白为什么添加这个包会使我的构建如此长,以及为什么我需要显式地安装它以避免如此长的构建时间。另外,下载后安装所有软件包不是更好吗?

你认为有什么明显的方法来改善我目前的码头建设吗?

EN

回答 1

Stack Overflow用户

发布于 2021-07-20 15:11:06

事实上,基于C的SQLite包的构建只需很长时间。我现在自己用,是的,每次都很痛苦。我也对此感到不满,并一直在寻找替代方案。我一直忙于其他项目,但我确实找到了这个QL 1包,您可以不用C2构建它。

代码语言:javascript
复制
go build -tags purego

或者,如果您只需要只读,可以尝试SQLittle 3。

  1. https://pkg.go.dev/modernc.org/ql
  2. https://pkg.go.dev/modernc.org/ql#hdr-Building_non_CGO_QL
  3. https://github.com/alicebob/sqlittle
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68456778

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档