我没有在Ubuntu 16.04上使用CUDA构建的带有Syntaxnet的Tensorflow。 在此系统上没有CUDA的情况下,我已经成功构建了它。
错误很可能是由配置引起的。使用CUDA的tensorflow的bazel构建使用链接器选项为共享库生成链接器命令 -pie用于生成具有位置无关代码的可执行文件。这将导致错误“未定义对“ main”的引用”。
/home/patrick/.cache/bazel/_bazel_patrick/5b9c9cf56f3e0138be05b0752b134bcb/external/com_google_absl/absl/base/BUILD.bazel:28:1: Linking of rule '@com_google_absl//absl/base:spinlock_wait' failed (Exit 1):
crosstool_wrapper_driver_is_not_gcc failed: error executing command
`(cd /home/patrick/.cache/bazel/_bazel_patrick/5b9c9cf56f3e0138be05b0752b134bcb `/execroot/__main__ && exec env - \
CUDA_TOOLKIT_PATH=/usr/local/cuda \
CUDNN_INSTALL_PATH=/usr/local/cuda \
GCC_HOST_COMPILER_PATH=/usr/bin/gcc \
LD_LIBRARY_PATH=/usr/local/cuda-9.0/lib64:/usr/local/cuda-9.0/extras/CUPTI/lib64:/usr/local/cuda-9.0/nvvm/lib64 \
NCCL_INSTALL_PATH=/usr \ PATH=/home/patrick/bin:/home/patrick/.local/bin:/usr/local/cuda/bin:/usr/bin:/bin \
PWD=/proc/self/cwd \
PYTHON_BIN_PATH=/usr/bin/python \
PYTHON_LIB_PATH=/usr/local/lib/python2.7/dist-packages \
TF_CUDA_CLANG=0 \
TF_CUDA_COMPUTE_CAPABILITIES=6.1 \
TF_CUDA_VERSION=9.0 \
TF_CUDNN_VERSION=7 \
TF_NCCL_VERSION=2 \
TF_NEED_CUDA=1 \
TF_NEED_OPENCL_SYCL=0 \
external/local_config_cuda/crosstool/clang/bin/crosstool_wrapper_driver_is_not_gcc -shared -o bazel-out/k8-opt/bin/external/com_google_absl/absl/base/libspinlock_wait.so -Wl,-no-as-needed -B/usr/bin/ -pie -Wl,-z,relro,-z,now -no-canonical-prefixes -pass-exit-codes '-Wl,--build-id=md5' '-Wl,--hash-style=gnu' -Wl,--gc-sections -Wl,@bazel-out/k8-opt/bin/external/com_google_absl/absl/base/libspinlock_wait.so-2.params)
/usr/lib/gcc/x86_64-linux-gnu/5/../../../x86_64-linux-gnu/Scrt1.o: In function `_start':
(.text+0x20): undefined reference to `main'
collect2: error: ld returned 1 exit status
删除选项-pie时,此链接命令成功。 我们希望能帮助您找到一种方法来编辑Bazel使用的链接器标志,或者提示我遇到类似问题的用户所犯的配置错误。我认为发布我所做的配置步骤不会导致其他建议,而不是已经在其他帖子中阅读的建议。构建过程对我来说太不稳定了。 我已经看过了CROSSTOOL和BUILD文件中的定义。我没有编辑它们,它们看起来还不错(-pie仅用于链接可执行文件)。
我与
一起工作