sqlite cgo 交叉编译linux发布 报错问题
用到了github.com/mattn/go-sqlite3的包,windows运行的好好的打包发布linux ,设置了环境变量:set GOARCH=amd64set GOOS=linux结果拿到wsl一跑,报错:panic: Binary was compiled with 'CGO_ENABLED=0', go-sqlite3 requires cgo to work. This is a
用到了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,还是算了吧。
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)