编译TensorFlow r1.5分支时出现third_party/eigen3包不存在错误
解决TensorFlow r1.5编译时的循环符号链接错误
你遇到的问题核心是循环符号链接导致Bazel无法正常遍历third_party/eigen3目录——具体是mkl_include/include这个链接形成了无限嵌套的层级,让Bazel的文件匹配(glob)操作陷入死循环,最终触发"Too many levels of symbolic links"错误。
问题根源
TensorFlow r1.5对MKL的集成还处于早期阶段,自动配置脚本或手动操作时,很容易错误创建指向自身的符号链接。比如mkl_include/include被设置为指向当前目录,导致每次访问都会进入更深一层的include/include/include/...,直到触发系统的层级限制。
修复步骤
检查并删除错误的符号链接
先查看当前链接的状态,确认是否存在循环:ls -l /home/mv310/projects/tensorflow/third_party/eigen3/mkl_include/如果看到
include -> ./include或类似指向自身/循环路径的链接,立即删除:rm /home/mv310/projects/tensorflow/third_party/eigen3/mkl_include/include重新创建正确的MKL include链接
找到你系统中MKL的实际include目录(通常默认路径是/opt/intel/mkl/include,自定义安装请替换为你的真实路径),然后创建正确的符号链接:ln -s /opt/intel/mkl/include /home/mv310/projects/tensorflow/third_party/eigen3/mkl_include/include清理Bazel缓存
旧的缓存可能残留错误的目录结构,执行彻底清理避免干扰:bazel clean --expunge重新执行编译命令
回到TensorFlow根目录,重新运行编译指令:bazel build --config=opt --config=cuda --config=mkl //tensorflow/tools/pip_package:build_pip_package
额外注意事项
- 执行
./configure时,务必输入MKL的根目录(比如/opt/intel/mkl),而非直接输入include子目录,否则自动配置脚本大概率会生成错误的链接。 - TensorFlow r1.5属于旧版本,虽然支持CUDA 9.1和cuDNN 7,但如果后续出现其他兼容性问题,建议检查官方针对r1.5的补丁,或严格匹配依赖版本要求。
内容的提问来源于stack exchange,提问作者Mark van der Wilk
相关产品推荐
相关产品推荐

