2015-12-17 4 views
1

Я запускаю приложение Go в среде Debian. Все мои разработки были выполнены на OSX, и все прошло отлично, но у меня возникла проблема с запуском команды на оболочке из кода Go.exec не работает команда из приложения Golang

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, и команда отлично работает, когда я запускаю его из оболочки.

Раньше я думал, что столкнулся с проблемой из-за неправильной переменной среды PATH. При печати перед запуском команды я получаю правильный путь. Более того, я попытался использовать LookPath и получил правильный путь как /usr/local/bin/cwebp.

ответ

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, и команда успешно сработала.

Смежные вопросы