TensorFlow不会使用调试模式构建

时间:2016-11-10 04:49:20

标签: gcc tensorflow gcc-warning

我们正在尝试使用调试标志构建TensorFlow测试用例:

  

bazel build -c dbg   // tensorflow /蟒/ kernel_tests:sparse_matmul_op_test

但是构建失败并出现以下错误:

  

/usr/include/features.h:330:4:错误:#warning _FORTIFY_SOURCE   需要使用优化进行编译(-O)[-Werror = cpp]
    警告_FORTIFY_SOURCE需要使用优化(-O)进行编译

     

cc1:所有警告都被视为错误

     

目标// tensorflow / python / kernel_tests:sparse_matmul_op_test失败   建立

我们尝试了以下选项来解决此问题:

  1. 通过将导出CFLAGS和CXXFLAGS导出为“-Wno-error”来构建

  2. bazel build -c dbg --cxxopt =“ - Wno-all”--cxxopt =“ - Wno-error”// tensorflow / python / kernel_tests:sparse_matmul_op_test

  3. 尝试从third_party / gpus / crosstool / CROSSTOOL.tpl评论compiler_flag

  4. 为构建继续禁止这些警告的正确方法是什么?

    我们正在使用gcc v5.4.0。

2 个答案:

答案 0 :(得分:2)

我最近遇到了同样的问题。它通过向构建命令添加--copt=-O-c opt来解决。

示例:

bazel build --copt=-O -c dbg -c opt //tensorflow/python/kernel_tests:sparse_matmul_op_test

答案 1 :(得分:0)

启用CUDA构建时@BernardoGO的解决方案无效:

$ bazel build --copt=-O -c opt --config cuda -c dbg --strip=never //tensorflow/tools/pip_package:build_pip_package -s

/usr/include/c++/6/bits/stl_pair.h(327): error: calling a __host__ function("std::_Rb_tree_const_iterator< ::tensorflow::NcclManager::NcclStream *> ::_Rb_tree_const_iterator") from a __device__ function("std::pair< ::std::_Rb_tree_const_iterator< ::tensorflow::NcclManager::NcclStream *> , bool> ::pair< ::std::_Rb_tree_iterator< ::tensorflow::NcclManager::NcclStream *>  &, bool &, (bool)1> ") is not allowed

/usr/include/c++/6/bits/stl_pair.h(327): error: identifier "std::_Rb_tree_const_iterator< ::tensorflow::NcclManager::NcclStream *> ::_Rb_tree_const_iterator" is undefined in device code

/usr/include/c++/6/bits/stl_algobase.h(1009): error: calling a __host__ function("__builtin_clzl") from a __device__ function("std::__lg") is not allowed

3 errors detected in the compilation of "/tmp/tmpxft_00007abb_00000000-6_nccl_manager.cpp1.ii".

仅当--copt=-O替换为--copt=-O1时才有效,但-O1太多,无法进行舒适的调试。