我有问题。
环境
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]
任何人都可以帮助我使它起作用?
错误很明显:
ld:找不到用于-ltensorflow的库
运行时,go test您将调用go编译器来编译所需的库,测试文件,然后执行它们。
go test
当编译使用“非纯” go库的程序时,必须使编译器(和链接程序)知道该库。
在编译阶段,编译器也在环境变量中列出的路径中查找库(也):
LIBRARY_PATH 在OS X和Linux上。
LIBRARY_PATH
因此,您必须在此变量中添加已编译库的位置。
例如,我有:
TFGOLIB="${GOPATH}/src/github.com/tensorflow/tensorflow/bazel-bin/tensorflow" export LIBRARY_PATH="${TFGOLIB}:${LIBRARY_PATH}"
相反,在运行时,操作系统会寻找该库以执行动态链接。
因此,您必须将此另一个变量(LD_LIBRARY_PATH在Linux和DYLD_LIBRARY_PATHOS X上)设置为相同位置。
LD_LIBRARY_PATH
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}"