源于 tg 群群友的推荐
文档: https://pkg.go.dev/modernc.org/sqlite 而且还有相应的 gorm 的驱动:https://github.com/cloudquery/sqlite
这样似乎用不到 cgo 了,而且 goreleaser 什么的好像都能跑
有没有人用过这个库,性能什么的差别大吗?如果不错的话感觉挺香的
1
Smash 2021-08-18 14:38:00 +08:00 via Android 1
cgo 对于交叉编译一点都不友好
|
2
meshell 2021-08-18 14:48:59 +08:00 1
1 楼+
|
5
gamexg 2021-08-18 15:09:13 +08:00
好东西
|
6
Smash 2021-08-18 15:11:57 +08:00 3
我有一个项目,用了 cgo 版本的 sqlite,CGO 是 ENABLE=1,在 docker 环境下的 alpine 上跑不起来。
用 file 命令查看可执行文件,发现是动态链接,很多 alpine 的动态链接库不兼容,最后需要改为静态链接。 最后加上 -linkmode "external" -extldflags "-static" 的 ldflag 参数才搞定。 |
7
keepeye 2021-08-18 15:12:22 +08:00
希望能发展壮大 讨厌 cgo
|
8
danc 2021-08-18 15:17:27 +08:00
大佬可以试试这个,我前几天试了下这个,但没有详细测试。这个库的大佬挺厉害,搞了一个 gcc 到 go 的编译器,然后把 sqlite 的 c 源码,编译成了 go 。
|
9
danc 2021-08-18 15:19:26 +08:00
https://gitlab.com/cznic/ccgo/-/blob/master/v3/main.go
``` //TODO parallel //TODO CPython //TODO Cython //TODO gmp //TODO gofrontend //TODO gsl //TODO gtk //TODO hdf5 //TODO minigmp //TODO mpc //TODO mpfr //TODO pcre //TODO pcre2 //TODO quickjs //TODO redis //TODO tcl/tk //TODO wolfssl //TODO zdat //TODO zlib ``` |
10
Smash 2021-08-18 15:19:53 +08:00 1
|
11
danc 2021-08-18 15:20:54 +08:00
上面有口误,是“c 到 go”的编译器
|
12
caotian 2021-08-18 15:43:25 +08:00
挺好, 之前有个项目用到 sqlite, mac 上不能运行, 不能编译, 没办法把源码拷到服务器上编译
|
13
dosgo 2021-08-18 16:03:03 +08:00
貌似 https://pkg.go.dev/modernc.org/sqlite 是用 exec 执行实现的?
|
14
qieqie 2021-08-18 18:07:52 +08:00
这个作者挺厉害的,不过他很多项目实验性比较强,我是不敢用
|
15
qieqie 2021-08-18 18:21:38 +08:00
你们抱怨的 cgo 问题,换了 c/c++一样会遇到,和 cgo 就没啥关系,
而且你以为你静态链接了所有依赖,其实没有,不信可以试试`gethostbyname` |
16
kekeabab 2021-08-19 18:14:49 +08:00
至少这个库,我觉得交叉编译很友好呀
GOOS=linux GOARCH=arm64 go build -x -trimpath -a -ldflags '-extldflags "-static -fpic -s -w"' . 环境是 archlinux 5.13.10-arch1-1 linux/amd64 x86_64 go version go1.17 |
19
iyear OP @kekeabab #18 https://github.com/mattn/go-sqlite3 这个?这个交叉编译可以这么方便的吗。。我孤陋寡闻了
|
20
kekeabab 2021-08-20 14:09:24 +08:00
@iyear #19 https://github.com/mattn/go-sqlite3 就是这个,用这个了蛮久了,如果不用一些扩展的话,交叉编译很方便,下载完对应的 gcc 就能用了。
|
21
RTSmile 2021-08-22 14:22:33 +08:00
@kekeabab 这个很奇怪,我这里用静态编译指令过后,在 Centos7 上面跑一段时间会莫名其妙报空指针错误然后挂掉,不静态就不出问题,不太了解是什么原因。
|
22
EsSkOyN 2022-07-29 09:47:53 +08:00
笑嘻了 cloudquery archive 了
|
23
iyear OP @EsSkOyN #22 没太懂笑点在哪。fork 更新一下版本继续用呗 https://github.com/iyear/sqlite
|