我有这个问题。
环境
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]
任何人都可以帮助我使它有效吗?
答案 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