本文介绍新版llama.cpp在win7的编译移植方法。
背景
自2025.9月左右,llama.cpp主线对其cpp-httplib依赖库进行了版本升级,新版不再支持win8以下的系统。笔者经过多番尝试,将新版llama.cpp成功编译到win7,新版llama.cpp可支持qwen3系列模型。
编译环境
系统:WIN7 SP1 旗舰版
编译工具:w64devkit 2.1.0
CMake
可参考此文
注意:源码路径应无中文
源码修改及编译方法
需对llama.cpp源码做以下修改:
(1)clone 版本库,checkout到较新版本(建议晚于2025.10),本文使用b7562 版本。
(2)搜索版本号变量WIN32_WINNT,将相关定义修改为WIN7版本号 0x0601。
(3)搜索GGML_WIN_VER变量的定义(可能没有),修改为WIN7版本号 0x0601
(4)对照老的httplib.h,将httplib.cpp文件中对CreateFile2、CreateFileMappingFromApp、MapViewOfFileFromApp三个函数的调用改为兼容WIN7的老API,修改后函数调用如下:
bash
hFile_ = ::CreateFileW(wpath.c_str(), GENERIC_READ, FILE_SHARE_READ, NULL,
OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
hMapping_ = ::CreateFileMappingW(hFile_, NULL, PAGE_READONLY, 0, 0, NULL);
addr_ = ::MapViewOfFile(hMapping_, FILE_MAP_READ, 0, 0, 0);
(5)执行cmake
cmake
cmake . -G "MinGW Makefiles" -DLLAMA_CURL=OFF -DCMAKE_CXX_COMPILER=g++ -DCMAKE_C_COMPILER=gcc -DLLAMA_BUILD_TESTS=OFF
(6)编译
单线程编译,避免冲突报错
bash
cmake --build.--config Release -j 1