我在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
。
答案 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
安装了它,命令运行成功。