exec没有从Golang应用程序运行命令

时间:2015-12-17 10:39:45

标签: go webp

我在Debian环境中运行Go应用程序。我的所有开发都是在OSX上进行的,它运行正常,但我在使用Go代码在shell上运行命令时遇到问题。

cmdName := "cwebp"
cmdArgs := []string{srcPath, "-o", dstPath}
log.Printf("Executing %s : %+v", cmdName, cmdArgs)
cmd := exec.Command(cmdName, cmdArgs...)
_, err := cmd.StdoutPipe()
if err != nil {
    log.Printf("Error: %s", err)
}
err = cmd.Run()
if err != nil {
    log.Printf("Error: %s", err)
}

应用程序进程是从我的root用户运行的,当我从shell运行它时,命令工作正常。

之前,我认为由于PATH环境变量不正确而面临问题。在运行命令之前打印,我得到正确的路径。此外,我尝试使用LookPath并获得正确的路径/usr/local/bin/cwebp

1 个答案:

答案 0 :(得分:0)

问题不在于命令的执行,而是以某种方式Go无法找到正确的库。在检查命令的输出时,我得到以下内容:

cwebp: error while loading shared libraries: libwebp.so.5: cannot open shared object file: No such file or directory

这让我想到了libwebp的安装一定是错误的。早些时候,我从源代码构建了libwebp。所以,我通过apt-get install libwebp-dev安装了它,命令运行成功。