Ubuntu 17.10
GCC版本:5.4
Bazel版本:0.9.0
TensorFlow:r1.5
CUDA 8.0 / cuDNN 6 / GTX 1080 Ti
如何让Bazel使用gcc从源代码构建TensorFlow?
构建时,遇到编译错误,如:
error: 'errno' was not declared in this scope
while (nanosleep(&ts, &ts) != 0 && errno == EINTR) {}
设置--verbose_failures标志,它显示它不使用/ usr / bin / gcc-5或/ usr / bin / gcc进行编译
external/local_config_cuda/crosstool/clang/bin/crosstool_wrapper_driver_is_not_gcc -U_FORTIFY_SOURCE '-D_FORTIFY_SOURCE=1' -fstack-protector -fPIE -Wall -Wunused-but-set-parameter -Wno-free-nonheap-object -fno-omit-frame-pointer -g0 -O2 -DNDEBUG -ffunction-sections -fdata-sections -g0 -DGEMMLOWP_ALLOW_SLOW_SCALAR_FALLBACK '-march=native' '-std=c++11' -g0 -MD -MF
在线搜索,我发现gcc和CC的路径,CXX变量必须在tools / cpp / CROSSTOOL中设置。但究竟哪里有tools / cpp / CROSSTOOL?我如何强迫bazel使用gcc-5?
答案 0 :(得分:0)
我对cuda和tensorflow几乎一无所知,但是在使用cuda进行编译时,tensorflow没有使用与bazel autoconfigures相同的C ++工具链,因此CC
env变量技巧不起作用。文件crosstool_wrapper_driver_is_not_gcc
只是一个shell包装器,理论上仍然可以调用你的gcc(或者它将是cuda)。我用--subcommands
运行bazel来查看失败动作的完全调用,然后在没有bazel的情况下重现,然后从那里开始。