TensorFlow for Go演示示例运行失败

时间:2017-06-08 07:04:07

标签: go tensorflow

我有这个问题。

环境

macbookpro:lib fredlee$ go version
go version go1.8.3 darwin/amd64
macbookpro:lib fredlee$ pwd
/usr/local/lib
macbookpro:lib fredlee$ ls -alh libtensorflow.so 
-r-xr-xr-x  1 root  wheel   102M  1  1  1970 libtensorflow.so
macbookpro:lib fredlee$ file libtensorflow.so 
libtensorflow.so: Mach-O 64-bit dynamically linked shared library x86_64
macbookpro:lib fredlee$

问题

> macbookpro:~ fredlee$ go get
> github.com/tensorflow/tensorflow/tensorflow/go macbookpro:~ fredlee$
> go test github.com/tensorflow/tensorflow/tensorflow/go
> # github.com/tensorflow/tensorflow/tensorflow/go ld: library not found for -ltensorflow clang: error: linker command failed with exit code 1
> (use -v to see invocation)
> FAIL  github.com/tensorflow/tensorflow/tensorflow/go [build failed]

任何人都可以帮助我使它有效吗?

2 个答案:

答案 0 :(得分:3)

错误很明显:

  

ld:找不到-ltensorflow的库

运行go test时,您需要调用编译所需库的go编译器,测试文件然后执行它们。

编译使用"非纯"的程序时。去库,你必须使编译器(和链接器)知道库。

在编译阶段,编译器在环境变量中列出的路径中查找库(也是):

OS X上的

LIBRARY_PATH& Linux操作系统。

因此,您必须将已编译库的位置添加到此变量中。

例如我有:

TFGOLIB="${GOPATH}/src/github.com/tensorflow/tensorflow/bazel-bin/tensorflow"
export LIBRARY_PATH="${TFGOLIB}:${LIBRARY_PATH}"

在运行时期间,os会查找库以执行动态链接。

因此,您必须将此另一个变量(在Linux上LD_LIBRARY_PATH和OS X上的DYLD_LIBRARY_PATH)设置到同一位置。

此外,我建议您也将CUDA库路径添加到此变量中,以使其在运行时可用。

export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/opt/cuda/lib64:/opt/cuda/extras/CUPTI/lib64:/opt/cudnn5.1/cuda/lib64:${TFGOLIB}"

答案 1 :(得分:0)

我不放弃了解为什么要测试第三方软件包。但是从您的错误中,看起来像找不到名为ld的库。如果需要包,那么我相信它应该安装在$ GOPATH / bin中。所以,请尝试:

export PATH=$PATH:$GOPATH/bin