2016-10-05 108 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

相關問題