2016-10-05 104 views
13

我在我的Mac上构建tensorflow(一个hackintosh,所以我有一个GPU,并且已经安装了CUDA8.0。细跟建筑朱古力,所以我相信它的作品),我已经设置了环境变量如下(我在.zshrc.bash_profile.bashrc把这些):dyld:Library未加载:@ rpath/libcudart.8.0.dylib,同时在Mac OSX上构建tensorflow

export CUDA_HOME=/usr/local/cuda 
export DYLD_LIBRARY_PATH="$DYLD_LIBRARY_PATH:$CUDA_HOME/lib" 
export PATH="$CUDA_HOME/bin:$PATH" 
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$CUDA_HOME/lib:$CUDA_HOME/extras/CUPTI/lib" 

./configure工作正常。然后我使用命令bazel build -c opt --config=cuda //tensorflow/tools/pip_package:build_pip_package开始构建。 后来我得到这个错误:

ERROR: /Development/tensorflow/tensorflow/python/BUILD:572:1: Executing genrule //tensorflow/python:array_ops_pygenrule failed: bash failed: error executing command /bin/bash -c ... (remaining 1 argument(s) skipped): com.google.devtools.build.lib.shell.AbnormalTerminationException: Process terminated by signal 5. 
dyld: Library not loaded: @rpath/libcudart.8.0.dylib 
    Referenced from: /private/var/tmp/_bazel_zarzen/bdf1cb43f3ff02468b610730bd03f348/execroot/tensorflow/bazel-out/host/bin/tensorflow/python/gen_array_ops_py_wrappers_cc 
    Reason: image not found 
/bin/bash: line 1: 92702 Trace/BPT trap: 5  bazel-out/host/bin/tensorflow/python/gen_array_ops_py_wrappers_cc @tensorflow/python/ops/hidden_ops.txt 1 > bazel-out/local_darwin-opt/genfiles/tensorflow/python/ops/gen_array_ops.py 
Target //tensorflow/tools/pip_package:build_pip_package failed to build 

我可以确保丢失的图书馆是存在的。我也尝试安装预先构建的二进制文件(我知道它只支持CUDA7.5,所以我设置PATH指向CUDA7.5,但它不起作用,当我尝试import tensorflow时,类似的错误Library not loaded: @rpath/libcudart.7.5.dylib,版本号更改)。我不知道为什么找不到lib。任何人都可以帮忙或者有什么建议?

+0

我见过SIP干扰rpath的dyld的负荷,你可以尝试禁用它,如果你是在埃尔卡皮坦(系统完整性保护) –

+0

你是否能解决这个问题?这里同样的错误。 – Stefan

+0

不,但按照下面的Vijay的指示,可以引导您通过构建阶段。然而在'import'阶段依然找不到'dylib' – Zen

回答

8

以下内容应修复错误。

找到文件“genrule-setup.sh”。该文件应该在

<tensorflow source dir>/bazel-tensorflow/external/bazel_tools/tools/genrule/ 

如果此文件的时间戳发生更改,则bazel生成将失败,说明文件已损坏。因此,修改此文件之前做出说明时间戳的

stat genrule-setup.sh 

你应该得到这样的输出:

16777220 25929227 -rwxr-xr-x 1 user wheel 0 242 "Oct 12 23:46:28 2016" "Oct 10 21:49:39 2026" "Oct 12 21:49:39 2016" "Oct 12 21:49:38 2016" 4096 8 0 genrule-setup.sh 

记下第二时间戳“10月10日21时49分39秒2026”从上述输出

编辑genrule-setup.sh文件

nano genrule-setup.sh 

,并添加环境CON配置到文件末尾

export DYLD_LIBRARY_PATH=/usr/local/cuda/lib 

保存并关闭编辑器。

然后时间戳改变为原始时间戳

touch -t YYYYMMDDhhmm.SS genrule-setup.sh 

为例如

touch -t 202610102149.39 genrule-setup.sh 

最后,创建一个符号链接,以避免出现 “段错误:11” 错误

ln -sf /usr/local/cuda/lib/libcuda.dylib /usr/local/cuda/lib/libcuda.1.dylib 

现在重新构建

bazel build -c opt --config=cuda //tensorflow/tools/pip_package:build_pip_package 
+2

现在我可以构建。但是在构建和安装之后。我尝试导入张量流,再次找不到图像; ''' – Zen

+0

详细'ImportError:dlopen(/usr/local/lib/python2.7/site-packages/tensorflow/python/_pywrap_tensorflow.so,10):未加载库:@ rpath/libcudart.8.0.dylib' – Zen

+0

检查DYLD_LIBRARY_PATH env变量是否设置为/ usr/local/cuda/lib。还要检查/ usr/local/cuda/lib文件夹是否包含libcudart.8.0.dylib – Vijay

0

当运行./configure,请确保您指定正确的cuda版本。您可以通过运行发现了这一点:

/usr/local/cuda/bin/nvcc --version 

你可以通过环境变量使用action_env标志在生成过程中巴泽尔。

bazel build -c opt --config=cuda \ 
    --action_env=DYLD_LIBRARY_PATH=/usr/local/cuda/lib \ 
    //tensorflow/tools/pip_package:build_pip_package 

https://bazel.build/designs/2016/06/21/environment.html

相关问题