Windows下TensorFlow Lite 2.16.2编译失败:符号链接权限问题
解决Windows 10下编译TensorFlow Lite 2.16.2 C++版本的符号链接权限错误
问题场景
在Windows 10环境编译TensorFlow Lite 2.16.2(C++版本),执行构建命令bazel build -c opt //tensorflow/lite:tensorflowlite时触发权限错误。已完成前置依赖安装:msys2(已加入环境变量)、bazel 6.2.1(已配置环境变量)、LLVM;执行python ./configure.py时所有选项均选No。
错误详情
ERROR: An error occurred during the fetch of repository 'python_x86_64-pc-windows-msvc': Traceback (most recent call last): File "C:/users/tyler/_bazel_tyler/rkret32s/external/rules_python/python/repositories.bzl", line 377, column 17, in _python_repository_impl rctx.symlink(python_bin, "python") Error in symlink: java.io.IOException: Could not create symlink from C:/users/tyler/_bazel_tyler/rkret32s/external/python_x86_64-pc-windows-msvc/python.exe to C:/users/tyler/_bazel_tyler/rkret32s/external/python_x86_64-pc-windows-msvc/python: Cannot create symlink (name=C:\users\tyler\_bazel_tyler\rkret32s\external\python_x86_64-pc-windows-msvc\python, target=C:\users\tyler\_bazel_tyler\rkret32s\external\python_x86_64-pc-windows-msvc\python.exe): ERROR: src/main/native/windows/file-jni.cc(140): nativeCreateSymlink(\\?\C:\users\tyler\_bazel_tyler\rkret32s\external\python_x86_64-pc-windows-msvc\python, \\?\C:\users\tyler\_bazel_tyler\rkret32s\external\python_x86_64-pc-windows-msvc\python.exe): ERROR: src/main/native/windows/file.cc(523): CreateSymlink(\\?\C:\users\tyler\_bazel_tyler\rkret32s\external\python_x86_64-pc-windows-msvc\python.exe): createSymbolicLinkW failed (permission denied). Either Windows developer mode or admin privileges are required. ERROR: C:/users/tyler/downloads/tensorflow-2.16.2/WORKSPACE:36:27: fetching python_repository rule //external:python_x86_64-pc-windows-msvc: Traceback (most recent call last): File "C:/users/tyler/_bazel_tyler/rkret32s/external/rules_python/python/repositories.bzl", line 377, column 17, in _python_repository_impl rctx.symlink(python_bin, "python") Error in symlink: java.io.IOException: Could not create symlink from C:/users/tyler/_bazel_tyler/rkret32s/external/python_x86_64-pc-windows-msvc/python.exe to C:/users/tyler/_bazel_tyler/rkret32s/external/python_x86_64-pc-windows-msvc/python: Cannot create symlink (name=C:\users\tyler\_bazel_tyler\rkret32s\external\python_x86_64-pc-windows-msvc\python, target=C:\users\tyler\_bazel_tyler\rkret32s\external\python_x86_64-pc-windows-msvc\python.exe): ERROR: src/main/native/windows/file-jni.cc(140): nativeCreateSymlink(\\?\C:\users\tyler\_bazel_tyler\rkret32s\external\python_x86_64-pc-windows-msvc\python, \\?\C:\users\tyler\_bazel_tyler\rkret32s\external\python_x86_64-pc-windows-msvc\python.exe): ERROR: src/main/native/windows/file.cc(523): CreateSymlink(\\?\C:\users\tyler\_bazel_tyler\rkret32s\external\python_x86_64-pc-windows-msvc\python.exe): createSymbolicLinkW failed (permission denied). Either Windows developer mode or admin privileges are required. ERROR: Error computing the main repository mapping: Encountered error while reading extension file 'requirements.bzl': no such package '@pypi//': no such package '@python_x86_64-pc-windows-msvc//': java.io.IOException: Could not create symlink from C:/users/tyler/_bazel_tyler/rkret32s/external/python_x86_64-pc-windows-msvc/python.exe to C:/users/tyler/_bazel_tyler/rkret32s/external/python_x86_64-pc-windows-msvc/python: Cannot create symlink (name=C:\users\tyler\_bazel_tyler\rkret32s\external\python_x86_64-pc-windows-msvc\python, target=C:\users\tyler\_bazel_tyler\rkret32s\external\python_x86_64-pc-windows-msvc\python.exe): ERROR: src/main/native/windows/file-jni.cc(140): nativeCreateSymlink(\\?\C:\users\tyler\_bazel_tyler\rkret32s\external\python_x86_64-pc-windows-msvc\python, \\?\C:\users\tyler\_bazel_tyler\rkret32s\external\python_x86_64-pc-windows-msvc\python.exe): ERROR: src/main/native/windows/file.cc(523): CreateSymlink(\\?\C:\users\tyler\_bazel_tyler\rkret32s\external\python_x86_64-pc-windows-msvc\python.exe): createSymbolicLinkW failed (permission denied). Either Windows developer mode or admin privileges are required.
已尝试操作
- 以管理员身份运行CMD执行编译命令,无效
- 执行注册表命令开启开发者模式:
reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\AppModelUnlock" /t REG_DWORD /f /v "AllowDevelopmentWithoutDevLicense" /d "1"
可行解决方案
1. 彻底开启开发者模式并重启
注册表修改后需要重启系统才能生效,也可以手动通过系统设置开启:
- 打开「设置」→「更新和安全」→「开发者选项」
- 勾选「开发人员模式」,等待系统完成配置后重启电脑
2. 为Bazel缓存目录赋予完全控制权限
错误中涉及的Bazel缓存目录为C:\users\tyler\_bazel_tyler,操作步骤:
- 右键该目录,选择「属性」→「安全」→「编辑」
- 添加当前登录用户,勾选「完全控制」权限,点击确定保存
3. 强制Bazel禁用符号链接
在执行编译命令前,设置环境变量让Bazel用复制或硬链接替代符号链接:
set BAZEL_USE_CPP_ONLY_TOOLCHAIN=1 set BAZEL_LINKLIBS=-l%SystemRoot%\system32\advapi32.lib
也可以在TensorFlow源码根目录的.bazelrc文件中添加以下配置(如果没有则新建):
build --define=windows_symlinks=0 build --linkopt=-ladvapi32.lib
4. 使用MSYS2终端执行编译命令
以管理员身份打开MSYS2终端,切换到TensorFlow源码目录后再执行Bazel构建命令,MSYS2对Windows下的符号链接支持兼容性更好。
内容的提问来源于stack exchange,提问作者Turgut
相关产品推荐
相关产品推荐

