ソースからTensorFlowをコンパイルしようとしたときに次のエラーが発生します。どんな考えでも役に立ちます。
bazel-out/Host/bin/_solib_local/_U_S_Stensorflow_Spython_Cgen_Unn_Uops_Upy_Uwrappers_Ucc___Utensorflow/libtensorflow_framework.so: undefined reference to `[email protected]'
bazel-out/Host/bin/_solib_local/_U_S_Stensorflow_Spython_Cgen_Unn_Uops_Upy_Uwrappers_Ucc___Utensorflow/libtensorflow_framework.so: undefined reference to `[email protected]'
bazel-out/Host/bin/_solib_local/_U_S_Stensorflow_Spython_Cgen_Unn_Uops_Upy_Uwrappers_Ucc___Utensorflow/libtensorflow_framework.so: undefined reference to `[email protected]'
bazel-out/Host/bin/_solib_local/_U_S_Stensorflow_Spython_Cgen_Unn_Uops_Upy_Uwrappers_Ucc___Utensorflow/libtensorflow_framework.so: undefined reference to `[email protected]'
bazel-out/Host/bin/_solib_local/_U_S_Stensorflow_Spython_Cgen_Unn_Uops_Upy_Uwrappers_Ucc___Utensorflow/libtensorflow_framework.so: undefined reference to `[email protected]'
bazel-out/Host/bin/_solib_local/_U_S_Stensorflow_Spython_Cgen_Unn_Uops_Upy_Uwrappers_Ucc___Utensorflow/libtensorflow_framework.so: undefined reference to `[email protected]'
bazel-out/Host/bin/_solib_local/_U_S_Stensorflow_Spython_Cgen_Unn_Uops_Upy_Uwrappers_Ucc___Utensorflow/libtensorflow_framework.so: undefined reference to `[email protected]'
bazel-out/Host/bin/_solib_local/_U_S_Stensorflow_Spython_Cgen_Unn_Uops_Upy_Uwrappers_Ucc___Utensorflow/libtensorflow_framework.so: undefined reference to `[email protected]'
bazel-out/Host/bin/_solib_local/_U_S_Stensorflow_Spython_Cgen_Unn_Uops_Upy_Uwrappers_Ucc___Utensorflow/libtensorflow_framework.so: undefined reference to `[email protected]'
bazel-out/Host/bin/_solib_local/_U_S_Stensorflow_Spython_Cgen_Unn_Uops_Upy_Uwrappers_Ucc___Utensorflow/libtensorflow_framework.so: undefined reference to `[email protected]'
bazel-out/Host/bin/_solib_local/_U_S_Stensorflow_Spython_Cgen_Unn_Uops_Upy_Uwrappers_Ucc___Utensorflow/libtensorflow_framework.so: undefined reference to `[email protected]'
bazel-out/Host/bin/_solib_local/_U_S_Stensorflow_Spython_Cgen_Unn_Uops_Upy_Uwrappers_Ucc___Utensorflow/libtensorflow_framework.so: undefined reference to `[email protected]'
bazel-out/Host/bin/_solib_local/_U_S_Stensorflow_Spython_Cgen_Unn_Uops_Upy_Uwrappers_Ucc___Utensorflow/libtensorflow_framework.so: undefined reference to `[email protected]'
bazel-out/Host/bin/_solib_local/_U_S_Stensorflow_Spython_Cgen_Unn_Uops_Upy_Uwrappers_Ucc___Utensorflow/libtensorflow_framework.so: undefined reference to `[email protected]'
ビルドにバグがあるようです。同じことを自分のマシンで再現することができました。 LD_LIBRARY_PATH
の値は、bazelのビルド中に常に適切に伝播されるとは限らないようです。私の場合、次のコマンドを使用すると、正常にビルドできました。
bazel build --config=opt --config=cuda tensorflow/tools/pip_package:build_pip_package --action_env="LD_LIBRARY_PATH=${LD_LIBRARY_PATH}"
昨日、明らかに有効なcuda 9.0に対してソースからテンソルフローを構築しようとしたときに、同じエラーが発生しました。私の場合、git clean
とaction_env
の組み合わせは役に立ちませんでした-ld
は、bazelを介してcudalibの確認を一貫して拒否します。
このスレッド の指示に従うことになりました:rootとして、1行でファイル/etc/ld.so.conf.d/cuda.conf
を作成します
/usr/local/cuda/lib64
(/usr/local/cuda/
が具体的なcudaディレクトリにリンクされていると仮定します(例:/usr/local/cuda-9.0/
))。
次に、Sudo ldconfig
を発行します。これでビルドが実行され、tensorflowは私のGPUを使用しています。
この問題を検索しやすくするために:私が受け取ったエラーメッセージも上部に含まれています:
libcublas.so.9.0, needed by bazel-out/[...]/libtensorflow_framework.so, not found (try using -rpath or -rpath-link)
libcudnnなどの場合も同様です。
この問題が発生したとき、最初に/usr/local/cuda/lib64
と/usr/local/cuda/extras/CUPTI/lib64
をLD_LIBRARY_PATH
に追加し、再構築を試みました(--action_env
なし)。動作しませんでした。
次に、--action_env
を使用せずに、クリーンな再構成とビルドを実行しましたが、機能しました。 git clean -xdf
を使用してリポジトリをクリーンアップしました。これにより、リポジトリ内のgitに認識されていないすべてのファイルが削除されます。 :)
たぶん--action_env
は、クリーンな再構築を行う必要をなくしたでしょう、私は知りません。ただし、最初のビルドを実行する前にライブラリがLD_LIBRARY_PATH
にあった場合は、--action_env
は必要ないと思います。
エラーが発生した後、/usr/local/cuda/lib64
をLD_LIBRARY_PATH
に追加しました。それはうまくいきませんでした。次に、.tf_configure.bazelrc
をbuild --action_env LD_LIBRARY_PATH=..."
で再度変更しました。プロジェクトを再コンパイルして合格!