sqlite cgo 交叉编译linux发布 报错问题

用到了github.com/mattn/go-sqlite3的包,windows运行的好好的
打包发布linux ,设置了环境变量:

set GOARCH=amd64
set GOOS=linux

结果拿到wsl一跑,报错:


panic: Binary was compiled with 'CGO_ENABLED=0', go-sqlite3 requires cgo to work. This is a stub

go-sqlite用到了cgo加上

set CGO_ENABLED=1

编译报错:

# runtime/cgo
gcc_linux_amd64.c: In function '_cgo_sys_thread_start':
gcc_linux_amd64.c:61:2: error: unknown type name 'sigset_t'; did you mean '_sigset_t'?
  sigset_t ign, oset;

一番查找资料,下载安装了linux的gcc,尝试加了环境变量

rem set CC=E:\apps\gcc-7.5.0\bin\arm-linux-gnueabihf-gcc
rem set CXX=E:\apps\gcc-7.5.0\bin\arm-linux-gnueabihf-g++

报错提示

# runtime/cgo
cgo: exec E:\apps\gcc-7.5.0\bin\arm-linux-gnueabihf-gcc: exec: "E:\\apps\\gcc-7.5.0\\bin\\arm-linux-gnueabihf-gcc": file does not exist

怎么会找不到了。估计是windows系统无法使用linux上的。

索性在wsl上再搭建了一套node和go的开发环境
脚本基本变化不大:

VERSION=0.0.1
GOPATH=/mnt/d/dev-me/go/momotodo
GOARCH=amd64
GOOS=linux
cd src/momotodoweb
yarn build
mv ./dist/index.html ./dist/momotodo.html
cd $GOPATH
cd src
GO111MODULE=on
go build -o ../pro/momotodo-$VERSION
cd $GOPATH

需要注意的是,无论是npm还是go,都需要重新下载依赖。

我在用vite时直接报错了,删除了之前windows上下载的node_modules,重新install,才运行起来。

go 也是一样。

go env -w GOPROXY=https://goproxy.cn,direct

更新七牛的代理,之后重新build下载了依赖。

一段代码用的embed file,路径时\结果报找不到。
改成了/找到了。

安装gcc,这个里边还包括g++、make,很全:

sudo apt install build-essential

啥吉儿错都没报,顺利编译完成。启动,日志一切顺利。所以所谓的跨平台编译。emm,还是算了吧。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值