nvcc fatal : A single input file is required for a non-link phase when an outputfile is specified

编译llama.ccp,环境是win11和cuda12.6,出现错误

nvcc fatal : A single input file is required for a non-link phase when an outputfile is specified

其中的命令是:

“G:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\bin\nvcc.exe” --use-local-env -ccbin “C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\VC\Tools\MSVC\14.43.34808\bin\HostX64\x64” -x cu -I"H:\llama.cpp\ggml\src\ggml-cuda…" -I"H:\llama.cpp\ggml\src…\include" -I"G:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\include" -I"G:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\include" --keep-dir ggml-cuda\x64\Release -use_fast_math -maxrregcount=0 --machine 64 --compile -cudart static -std=c++17 --generate-code=arch=compute_50,code=[compute_50] --generate-code=arch=compute_61,code=[compute_61] --generate-code=arch=compute_70,code=[compute_70] --generate-code=arch=compute_75,code=[compute_75] --generate-code=arch=compute_80,code=[compute_80] --generate-code=arch=compute_86,code=[sm_86] --generate-code=arch=compute_89,code=[sm_89] /utf-8 -extended-lambda -Xcompiler=“/EHsc -Ob2” -D_WINDOWS -DNDEBUG -DGGML_BACKEND_BUILD -DGGML_BACKEND_SHARED -D_CRT_SECURE_NO_WARNINGS -DGGML_SCHED_MAX_COPIES=4 -D_XOPEN_SOURCE=600 -DGGML_CUDA_PEER_MAX_BATCH_SIZE=128 -DGGML_CUDA_USE_GRAPHS -DGGML_SHARED -D"CMAKE_INTDIR=“Release”" -Dggml_cuda_EXPORTS -D_WINDLL -D_MBCS -D"CMAKE_INTDIR=“Release”" -Dggml_cuda_EXPORTS -Xcompiler “/EHsc /W1 /nologo /O2 /FS /MD /GR” -Xcompiler “/Fdggml-cuda.dir\Release\vc143.pdb” -o ggml-cuda.dir\Release\fattn-vec-f32-instance-hs64-f16-f16.obj “H:\llama.cpp\ggml\src\ggml-cuda\template-instances\fattn-vec-f32-instance-hs64-f16-f16.cu”

逐个参数检查,发现命令中有个前后不相关的参数”/utf-8“,让nvcc命令认为是1个输入文件,这样就有2个输入文件了,所以报错。把这个参数移除就OK了。

为什么有”/utf-8"

是之前用cmake3.30.50编译中出现这个错误,

warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失

为了解决这个错误,就在CMakeList.txt文件中加入了,

add_compile_options("$<$<C_COMPILER_ID:MSVC>:/utf-8>")
add_compile_options("$<$<CXX_COMPILER_ID:MSVC>:/utf-8>")

最好的解决方法是在cmake的命令行中增加“utf-8”参数,比如

-Xcompiler="/GR /EHsc /utf-8"

参考官方文档
官方文档中,也可以通过设置环境变量.

最方便的是通过cmake-gui, 设置如下:

在这里插入图片描述

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值