llama.cpp报错D:/mingw64/lib/gcc/x86_64-w64-mingw32/8.1.0/include/c++/bits/fs_path.h:163:5: note: candidate expects 0 arguments, 1 provided make[2]: *** [ggml\src\CMakeFiles\ggml.dir\build.make:76: ggml/src/CMakeFiles/ggml.dir/ggml-backend-reg.cpp.obj] Error 1 make[1]: *** [CMakeFiles\Makefile2:1664: ggml/src/CMakeFiles/ggml.dir/all] Error 2
时间: 2025-08-31 12:06:05 AIGC 浏览: 17
<think>嗯,用户遇到了在编译llama.cpp时出现的错误,具体是关于fs_path.h头文件的候选函数期望0个参数但提供了1个参数,还有Mingw64的make编译错误。我需要先分析这些错误可能的原因。
首先,用户可能是在Windows环境下使用Mingw64进行编译。llama.cpp的编译通常需要特定的环境设置,比如正确的编译器版本和依赖库。fs_path.h这个头文件可能属于Boost库或者是C++标准库中的文件系统部分。如果是C++17的文件系统,可能需要检查编译器是否支持C++17,并且是否正确链接了库。
错误信息提到“candidate expects 0 arguments, 1 provided”,这说明在调用某个构造函数或函数时传入了参数,但该函数并没有对应的参数版本。例如,std::filesystem::path的构造函数可能被错误地调用。比如,用户可能在代码中使用了一个参数的构造函数,但实际上编译器找到的候选函数没有参数,这可能是因为命名空间或版本问题。
接下来,Mingw64的make编译错误可能涉及到编译器版本的问题。Mingw64的不同版本对C++标准的支持程度不同,或者需要额外的编译选项。用户可能需要更新Mingw64或者安装更新的GCC版本。此外,检查是否缺少某些依赖库,比如pthread或stdc++fs,这些在链接时需要指定。
另外,用户可能没有正确克隆llama.cpp的仓库,或者子模块没有初始化。这时候需要确保执行了git submodule update --init来获取所有必要的子模块。
解决步骤可能包括:确认C++版本是否为C++17或更高,添加必要的编译标志如-std=c++17,检查文件系统库的链接参数,更新编译器版本,以及确保所有依赖项正确安装。此外,查阅llama.cpp的官方文档或GitHub issues中是否有类似的问题,可能会有帮助。
最后,用户可能需要根据具体情况调整Makefile中的编译选项,或者在构建命令中明确指定参数,比如使用LLAMA_METAL=1等标志来启用特定功能,同时避免冲突。</think>### 解决方案:llama.cpp编译错误分析
#### 错误原因分析
该错误通常由以下原因共同导致:
1. **编译器版本与C++标准不匹配**:`fs_path.h`涉及C++17文件系统库(std::filesystem),需要显式指定C++17标准编译,并链接`libstdc++fs`库[^1]
2. **Mingw64环境配置问题**:Windows下使用Mingw64编译时,需要确保:
```bash
pacman -S mingw-w64-ucrt-x86_64-gcc mingw-w64-ucrt-x86_64-make
```
3. **文件系统库依赖未正确链接**:需在Makefile中添加`-lstdc++fs`链接参数
#### 具体修复步骤
1. **更新编译选项**(修改Makefile)
```makefile
CXXFLAGS = -I. -Icommon -std=c++17 -pthread
LDFLAGS += -lstdc++fs -pthread
```
2. **验证编译器版本**
```bash
g++ --version
# 要求版本 >= 11.0 (推荐使用gcc 13.2.0)
```
3. **完整编译命令示例**
```bash
make CC=ucrt64/bin/gcc CXX=ucrt64/bin/g++ \
LLAMA_METAL=1 LLAMA_OPENBLAS=1 \
CXXFLAGS="-march=native -mtune=native -O3 -std=c++17"
```
4. **常见错误处理**
```bash
# 若出现undefined reference to std::filesystem::...
# 需显式链接文件系统库
find /usr/ -name "libstdc++fs.*" 2>/dev/null
```
#### 补充说明
对于Windows环境,推荐优先使用官方预编译版本或WSL2环境。若必须使用Mingw64,建议通过MSYS2安装最新工具链:
```bash
pacman -Syu
pacman -S mingw-w64-ucrt-x86_64-toolchain
```
阅读全文
相关推荐




















