【发布时间】:2014-09-19 19:38:54
【问题描述】:
我正在尝试为用 Go 编写的应用程序创建一个无人参与的(也许是确定性的)构建过程。
这个想法是使用创建一个 Dockerfile 来安装所有先决条件,以便与其他人轻松共享构建过程,并且不需要真正的 Windows 安装。
但是,我一直在尝试构建具有 C 绑定的库。
我收到了这个非常非描述性的错误
C:\godev\src\github.com\obscuren\secp256k1-go>go build --work
WORK=C:\users\root\Temp\go-build287695705
# _/C_/godev/src/github.com/obscuren/secp256k1-go
copying $WORK\_\C_\godev\src\github.com\obscuren\secp256k1-go\_obj\_cgo_defun.8 to $WORK\_\C_\godev\src\github.com\obscuren\secp256k1-go.a: write $WORK\_\C_\godev\src\github.com\obscuren\secp256k1-go.a: Access denied.
带有-x 的完整日志可以be found here。
我可以在 OS X 和“真正的”Windows 安装上构建这个库。
任何帮助将不胜感激。
编辑:
使用 OneofOne 的大纲也会给我一些错误。
# runtime/cgo
pkg/runtime/cgo/cgo.go:26:46: fatal error: sys/types.h: No such file or directory.
compilation terminated.
最初我在为 Go 启用交叉编译时收到此错误。我通过安装 gcc-multilib 克服了这个问题。下一个问题如下。
# runtime/cgo
gcc: error: unrecognized command line option ‘-mthreads’
谷歌搜索此错误会导致两次命中,这对我的用户案例没有用处。我希望任何人以前都经历过这种情况。
编辑 2:
不确定是什么解决了它,但我做到了
apt-get install gcc-multilib
apt-get install gcc-mingw-w64
并用过
GOOS=windows GOARCH=386 CGO_ENABLED=1 CXX_FOR_TARGET=i686-w64-mingw32-g++ CC_FOR_TARGET=i686-w64-mingw32-gcc ./make.bash
现在我更进一步了。 :)
【问题讨论】:
-
它说“拒绝访问”,所以可能是权限问题。
-
我考虑过,但一切都以 root 身份运行。