python - 在 Windows 10 中生成错误的命令:
问题描述
这是代码,我正在尝试在命令提示符下使用 make 命令进行编译。
nvcc := "C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v11.0/bin/nvcc"
cudalib := "C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v11.0/extras/CUPTI/lib64"
cudainclude := "C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v11.0/include"
tensorflow := C:/Program Files (x86)/Microsoft Visual Studio/2019/Community/VC/Tools/MSVC/14.29.30133/bin/Hostx64/x64
TF_CFLAGS := $$(python -c 'import tensorflow as tf; print(" ".join(tf.sysconfig.get_compile_flags()))')
TF_LFLAGS := $$(python -c 'import tensorflow as tf; print(" ".join(tf.sysconfig.get_link_flags()))')
all: tf_nndistance_so.so
clean:
rm -rf *.o *.so
.PHONY : all clean
tf_nndistance_so.so: tf_nndistance_g.o tf_nndistance.cpp
g++ -std=c++11 -shared tf_nndistance.cpp tf_nndistance_g.o -o tf_nndistance_so.so -fPIC $(TF_CFLAGS) $(TF_LFLAGS) -O2
tf_nndistance_g.o: tf_nndistance_g.cu
$(nvcc) -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
但得到以下错误:
"C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v11.0/bin/nvcc" -D_GLIBCXX_USE_CXX11_ABI=0 -std=c++11 -c -o tf_nndistance_g.o tf_nndistance_g.cu -I C:/"Program Files (x86)"/"Microsoft Visual Studio"/2019/Community/VC/Tools/MSVC/14.29.30133/bin/Hostx64/x64 -DGOOGLE_CUDA=1 -x cu -Xcompiler -fPIC -O2
nvcc fatal : Cannot find compiler 'cl.exe' in PATH
make: *** [Makefile:19: tf_nndistance_g.o] Error 1
欢迎任何建议。
谢谢你。
解决方案
眼前的问题
您需要设置您的VStudio(您已经安装
的2019 )路径。
一种常见的方法是调用vcvarsall.bat : "C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Auxiliary\Build\vcvarsall.bat" x64
。
有关从命令行构建的更多详细信息:[SO]:如何构建 libjpeg 9b 的 DLL 版本?(@CristiFati 的回答)。
更大的问题
您正在混合编译器:
- CUDA Toolkit使用(默认)VStudio(本机)编译器(cl.exe)
- 您正在使用g++.exe
这是一个坏主意,您应该坚持使用一个编译器(cl - 如上一节所述)。请注意,您使用的某些标志不兼容。
或者指示CUDA使用g++(不知道它属于什么构建工具链,也不知道是否可行)。
推荐阅读
- r - 无法根据 dbl 值过滤列表中的行
- android - 如何将片段和子片段与导航组件一起使用?
- json - 无法将新键值添加到具有 JSON 对象的现有 JSON 数组中
- tfs - TFS 检查构建目录中是否存在文件
- html - 带有 colspan 的 HTML 表格显示错误
- angular - Highstocks 将范围选择器更改为下拉菜单
- spring-cloud-contract - Spring Cloud Contract for provider - 设置可选标头
- image - 如何在树枝模板中显示图像 GD 资源
- linker - 手动编译OpenSSL:制作共享对象时不能使用符号;使用 -fPIC 重新编译
- ocr - 为什么 Microsoft Cognitive 不返回每个 OCR 字段?