2
bazel build -c opt -- //tensorflow/...
produces these errors (after running for a long while):

ERROR: /home/luke/tensorflow/tensorflow/c/eager/BUILD:125:1: Linking of rule '//tensorflow/c/eager:c_api_test_gpu' failed (Exit 1) gcc failed: error executing command /usr/bin/gcc -o bazel-out/k8-opt/bin/tensorflow/c/eager/c_api_test_gpu '-Wl,-rpath,$ORIGIN/../../../_solib_k8/' -Lbazel-out/k8-opt/bin/_solib_k8 ... (remaining 64 argument(s) skipped)

Use --sandbox_debug to see verbose messages from the sandbox
bazel-out/k8-opt/bin/_solib_k8/libexternal_Sgrpc_Slibgrpc_Uresolver_Udns_Uares.so: error: undefined reference to 'ares_library_cleanup'
bazel-out/k8-opt/bin/_solib_k8/libexternal_Sgrpc_Slibgrpc_Uresolver_Udns_Uares.so: error: undefined reference to 'ares_library_init'
bazel-out/k8-opt/bin/_solib_k8/libexternal_Sgrpc_Slibgrpc_Uresolver_Udns_Uares.so: error: undefined reference to 'ares_inet_ntop'
bazel-out/k8-opt/bin/_solib_k8/libexternal_Sgrpc_Slibgrpc_Uresolver_Udns_Uares.so: error: undefined reference to 'ares_parse_srv_reply'
bazel-out/k8-opt/bin/_solib_k8/libexternal_Sgrpc_Slibgrpc_Uresolver_Udns_Uares.so: error: undefined reference to 'ares_free_data'
bazel-out/k8-opt/bin/_solib_k8/libexternal_Sgrpc_Slibgrpc_Uresolver_Udns_Uares.so: error: undefined reference to 'ares_parse_txt_reply_ext'
bazel-out/k8-opt/bin/_solib_k8/libexternal_Sgrpc_Slibgrpc_Uresolver_Udns_Uares.so: error: undefined reference to 'ares_query'
bazel-out/k8-opt/bin/_solib_k8/libexternal_Sgrpc_Slibgrpc_Uresolver_Udns_Uares.so: error: undefined reference to 'ares_search'
bazel-out/k8-opt/bin/_solib_k8/libexternal_Sgrpc_Slibgrpc_Uresolver_Udns_Uares.so: error: undefined reference to 'ares_gethostbyname'
bazel-out/k8-opt/bin/_solib_k8/libexternal_Sgrpc_Slibgrpc_Uresolver_Udns_Uares.so: error: undefined reference to 'ares_set_servers_ports'
bazel-out/k8-opt/bin/_solib_k8/libexternal_Sgrpc_Slibgrpc_Uresolver_Udns_Uares.so: error: undefined reference to 'ares_strerror'
bazel-out/k8-opt/bin/_solib_k8/libexternal_Sgrpc_Slibgrpc_Uresolver_Udns_Uares.so: error: undefined reference to 'ares_init'
bazel-out/k8-opt/bin/_solib_k8/libexternal_Sgrpc_Slibgrpc_Uresolver_Udns_Uares.so: error: undefined reference to 'ares_process_fd'
bazel-out/k8-opt/bin/_solib_k8/libexternal_Sgrpc_Slibgrpc_Uresolver_Udns_Uares.so: error: undefined reference to 'ares_cancel'
bazel-out/k8-opt/bin/_solib_k8/libexternal_Sgrpc_Slibgrpc_Uresolver_Udns_Uares.so: error: undefined reference to 'ares_getsock'
bazel-out/k8-opt/bin/_solib_k8/libexternal_Sgrpc_Slibgrpc_Uresolver_Udns_Uares.so: error: undefined reference to 'ares_destroy'

I tried running sudo apt-get install libc-ares-dev, which did address some of the build steps depending on c-ares, but not this one

I built c-ares from source and ran make install which places the .so libcares.so in /usr/local/lib/. I also verified that libcares does export those symbols. That didn't solve anything.

I made sure my LD_LIBRARY_PATH included /usr/local/lib/

How to I get bazel to find the library?

Thank you in advance.

chb
  • 1,727
  • 7
  • 25
  • 47
luke
  • 21
  • 1
  • 1
    I figured out I could add `linkopts = ["-l /usr/local/lib/libcares.so"],` in several places in the ./tensorflow/c/BUILD file, to force each particular rule to link. But the larger issue of making tensorflow build required me to invoke the build with the command line argument `--define=grpc_no_ares=true` – luke Dec 09 '18 at 12:37

0 Answers0