我希望从我的 Windows 机器上编译一个树莓派(快得多)。如果我使用此命令,一切正常:
env GOOS=linux GOARCH=arm GOARM=5 go build src/*.go
但是,我正在使用go-sqlite3
显然需要 CGO_ENABLED = 1
Binary was compiled with 'CGO_ENABLED=0', go-sqlite3 requires cgo to work. This is a stub
当我将编译命令更改为env GOOS=linux GOARCH=arm GOARM=5 CGO_ENABLED=1 go build src/*.go
Windows 时出现错误
$ env GOOS=linux GOARCH=arm GOARM=5 CGO_ENABLED=1 go build src/*.go
# runtime/cgo
cgo: exec C:\Program: exec: "C:\\Program": file does not exist
这看起来像一个简单的修复,但我对交叉编译不太满意。我在网上找不到太多。
编辑:
我移动了我的项目,现在我收到以下错误:
$ env GOOS=linux GOARCH=arm GOARM=5 CGO_ENABLED=1 go build src/*
# runtime/cgo
gcc: error: unrecognized command line option '-marm'; did you mean '-mabm'?*
我在网上看了一圈,显然需要指定CC:
$ env GOOS=linux GOARCH=arm GOARM=5 CGO_ENABLED=1 CC=arm-linux-gnueabi-gcc go build src/*
# runtime/cgo
cgo: exec arm-linux-gnueabi-gcc: exec: "arm-linux-gnueabi-gcc": executable file not found in %PATH%
所以,我正在着手解决这个问题,但我还没有。
我将尝试找到如何在 windows 上安装 gcc linux 并将其添加到PATH
. 但是,如果这不是正确的做法。我愿意寻求帮助
编辑2
我从https://gnutoolchains.com/raspberry/下载了一个工具链。我复制arm-linux-gnueabihf-gcc.exe
到C:\Users\Me\go\bin
现在我得到另一个错误
$ env GOOS=linux GOARCH=arm GOARM=5 CGO_ENABLED=1 CC=arm-linux-gnueabihf-gcc go build src/*
# runtime/cgo
arm-linux-gnueabihf-gcc: error: CreateProcess: No such file or directory
我会继续发布我的进展,但我相信答案很简单。……
编辑 3 好的添加了系统环境的路径,现在找到了但是......我现在遇到了一些链接器问题
$ env GOOS=linux GOARCH=arm GOARM=5 CGO_ENABLED=1 CC=arm-linux-gnueabihf-gcc go build src/*.go
# command-line-arguments
C:\Program Files\Go\pkg\tool\windows_amd64\link.exe: running arm-linux-gnueabihf-gcc failed: exit status 1
arm-linux-gnueabihf-gcc: fatal error: -fuse-linker-plugin, but liblto_plugin-0.dll not found
compilation terminated.