来自 Golang 应用程序的 exec not 运行 命令

exec not running command from Golang application

我正在 运行在 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)
}

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

早些时候,我认为我遇到的问题是由于 PATH 环境变量不正确造成的。在 运行ning 命令之前打印,我得到了正确的路径。此外,我尝试使用 LookPath 并获得了正确的路径 /usr/local/bin/cwebp.

问题不在于命令的执行,而是 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 和命令 运行 成功安装了它。