用到了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,还是算了吧。

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐