0

我希望从我的 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.exeC:\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.
4

1 回答 1

0

好的,所以通过编辑我展示了这项工作。

为了解决最初的问题cgo: exec C:\Program: exec: "C:\\Program": file does not exist ,我将项目移到了 GOPATH 中。

为了修复第一个编辑,我从https://gnutoolchains.com/raspberry/cgo: exec arm-linux-gnueabi-gcc: exec: "arm-linux-gnueabi-gcc": executable file not found in %PATH% 安装了工具链, 并确保 在用户和系统变量中都添加了该工具链。C:\SysGCC\raspberry\bin

为了修复第二个编辑arm-linux-gnueabihf-gcc: fatal error: -fuse-linker-plugin, but liblto_plugin-0.dll not found,我安装了https://sourceforge.net/projects/mingw/files/Installer/mingw-get-setup.exe/download并确保安装了以下数据包

  • mingw-开发者工具包
  • mingw32-base
  • mingw32-gcc-g++
  • msys-base 我不确定所有这些都是必要的。我还确保它C:\MinGW\bin在用户和系统变量中。

然后我需要重新启动我使用的所有终端,现在命令可以正确编译

于 2021-05-01T19:03:39.533 回答