Windows10运行make编译CUDA TensorFlow项目提示找不到cl.exe问题问询
报错核心原因
nvcc编译CUDA代码时需要调用MSVC的cl.exe作为宿主编译器,当前cl.exe所在路径未被纳入终端的PATH环境变量,导致nvcc无法定位到编译器。
可行解决方法
按优先级从高到低排列:
- 方法1:使用VS自带的开发者终端编译
打开开始菜单,搜索并启动x64 Native Tools Command Prompt for VS 2019,该终端会自动配置好所有MSVC相关的环境变量(包含cl.exe的路径),进入项目目录后直接执行make命令即可,无需修改任何配置,是兼容性最好的方案。 - 方法2:手动添加cl.exe路径到系统环境变量
- 右键「此电脑」→「属性」→「高级系统设置」→「环境变量」
- 在系统变量列表中找到
Path,点击编辑,新增以下路径:C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.29.30133\bin\Hostx64\x64 - 保存所有配置后重启命令提示符,重新执行make命令即可。
- 方法3:修改Makefile明确指定编译器路径
在nvcc的编译参数中添加-ccbin参数指定cl.exe所在目录,修改后的编译规则如下:tf_nndistance_g.o: tf_nndistance_g.cu $(nvcc) -ccbin "C:/Program Files (x86)/Microsoft Visual Studio/2019/Community/VC/Tools/MSVC/14.29.30133/bin/Hostx64/x64" -D_GLIBCXX_USE_CXX11_ABI=0 -std=c++11 -c -o tf_nndistance_g.o tf_nndistance_g.cu -I $(tensorflow) -DGOOGLE_CUDA=1 -x cu -Xcompiler -fPIC -O2
额外注意事项
你当前Makefile中tensorflow变量配置的是cl.exe的二进制目录,但是传给nvcc的是-I(头文件搜索路径)参数,若后续编译出现MSVC头文件找不到的报错,可将tensorflow变量修改为MSVC的头文件路径:C:/Program Files (x86)/Microsoft Visual Studio/2019/Community/VC/Tools/MSVC/14.29.30133/include
内容的提问来源于stack exchange,提问作者AMRUTA KABADE
相关产品推荐
相关产品推荐

