我们正在尝试使用调试标志构建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失败 建立
我们尝试了以下选项来解决此问题:
通过将导出CFLAGS和CXXFLAGS导出为“-Wno-error”来构建
bazel build -c dbg --cxxopt =“ - Wno-all”--cxxopt =“ - Wno-error”// tensorflow / python / kernel_tests:sparse_matmul_op_test
尝试从third_party / gpus / crosstool / CROSSTOOL.tpl评论compiler_flag
为构建继续禁止这些警告的正确方法是什么?
我们正在使用gcc v5.4.0。
答案 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
太多,无法进行舒适的调试。