Ubuntu 16.04LTS下用Bazel编译TensorFlow 1.4.0失败求助
解决TensorFlow编译时的CUDA路径乱码错误
这个问题我之前帮不少开发者解决过,核心是系统编码与Bazel的CUDA配置不兼容导致的文件名乱码(你看到的ï¼就是乱码后的异常字符)。下面是具体的解决步骤:
1. 强制设置系统为UTF-8编码
Ubuntu 16.04如果默认编码不是UTF-8,会导致Bazel处理文件路径时出现乱码:
- 先查看当前系统编码:
echo $LANG - 如果输出不是
en_US.UTF-8或其他UTF-8格式的编码,先临时设置:export LANG=en_US.UTF-8 export LC_ALL=en_US.UTF-8 - 要让设置永久生效,编辑
/etc/default/locale文件,写入以下内容:LANG=en_US.UTF-8 LC_ALL=en_US.UTF-8 - 保存后重启终端,或者运行
source /etc/default/locale使配置生效。
2. 清理Bazel缓存并重新配置TensorFlow
乱码的配置文件已经存到Bazel缓存里了,必须清理后重新生成:
- 删除错误提示中的缓存目录:
rm -rf /home/.cache/bazel/_bazel/978efb9ded2e9e03d9ec3f33c5686099 - 回到TensorFlow源码根目录,重新运行配置脚本:
注意:配置时要确保CUDA、cuDNN的路径都是纯ASCII字符(比如./configure/usr/local/cuda-8.0),不要包含中文或特殊符号。
3. 重新编译TensorFlow
完成上述步骤后,重新执行编译命令即可:
bazel build --config=cuda //tensorflow/tools/pip_package:build_pip_package
额外注意事项
- 确认CUDA 8.0和cuDNN 6.0的安装路径没有非ASCII字符,这是引发路径乱码的常见诱因;
- Bazel 0.5.4确实是TensorFlow 1.4.0的兼容版本,不用更换版本,只要确保编码配置正确即可。
内容的提问来源于stack exchange,提问作者pumay
相关产品推荐
相关产品推荐

