Go 如何设置二进制文件引用的文件的位置

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=[]字符串

当“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=/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"