Go 如何设置二进制文件引用的文件的位置
当“makensis”二进制文件执行test.nsi时,“makensis”二进制文件必须引用存根目录中的“zlib-x86-ansi”文件。但它会搜索GOROOT目录。所以它是错误的。我怎样才能修好它Go 如何设置二进制文件引用的文件的位置,go,Go,当“makensis”二进制文件执行test.nsi时,“makensis”二进制文件必须引用存根目录中的“zlib-x86-ansi”文件。但它会搜索GOROOT目录。所以它是错误的。我怎样才能修好它 GOROOT = /usr/local/go/ /root/go/src/bin/makensis /Stubs/zlib-x86-ansi /nsis/test.nsi 您可以尝试覆盖子流程的GOROOT,如下所示: cmd.Env=[]字符串
GOROOT = /usr/local/go/
/root/go/src/bin/makensis
/Stubs/zlib-x86-ansi
/nsis/test.nsi
您可以尝试覆盖子流程的
GOROOT
,如下所示:
cmd.Env=[]字符串{“GOROOT=/root/go/”}`
您是否尝试将cmd.Dir
更改为您的路径,即`cmd.Dir=/root/go/src/bin/binaryfile/Stubs/“?不,我没有。您的i.e.?我应该更改树结构吗?(ps.makensis是二进制文件的名称。)它正在运行。谢谢。源代码是什么意思?不客气!看起来您有两个GOROOT
s:/root/go
和/usr/local/go
。您的系统设置指向/usr/local/go
,但在这种情况下,您真正想要使用的是/root/go
。设置cmd.Env
覆盖这是系统设置。
cmd := exec.Command("/root/go/src/bin/makensis","/root/go/src/nsis/test.nsi")
cmd.Dir = "/root/go/src/bin/"
var out bytes.Buffer
var stderr bytes.Buffer
cmd.Stdout = &out
cmd.Stderr = &stderr
err := cmd.Run()
if err != nil {
log.Println(fmt.Sprint(err) + ": " + stderr.String())
return err
exit status 1: Error: "/usr/local/go/src/Stubs/zlib-x86-ansi"