I’m starting to learn Rust (wanted to start about 10 years ago, but better late than never). I’m trying two simultaneous paths:
- Self paced learning via these routes:
- Use the help of AI to try more advanced things before I completely understand them. As part of this I want to create a Rust program to send a prompt to a gguf file loaded via llama-cpp library. Had some hurdles and asked Gemini to summarize how to fix them
Here is a summary of the two compilation issues you encountered while building your Rust AI project, along with the solutions and steps we took to resolve them.
Issue 1: Missing libclang (C/C++ Binding Generation Failure)
The Symptom
The compilation panicked with the following error:
Plaintext
thread 'main' panicked at ... Unable to find libclang: "couldn't find any valid shared libraries matching: ['clang.dll', 'libclang.dll']"
The Cause
The rig-llama-cpp library relies on C++ code from llama.cpp. Rust uses a utility called bindgen to bridge the gap between C/C++ and Rust. bindgen requires LLVM/Clang to parse C++ headers, but Clang is not installed on Windows by default.
The Solution
We installed LLVM on Windows and registered its path so Rust can find it:
- Install LLVM: Run
winget install LLVM.LLVMin an Administrator terminal. - Set Environment Variable: Register the
LIBCLANG_PATHpointing to the installation directory (C:\Program Files\LLVM\bin). - Restart the Terminal: Restart your IDE and command line so they inherit the new environment variables.
Issue 2: CMake Generator Mismatch (Visual Studio 18 2026)
The Symptom
The build panicked later in the process with a CMake failure:
Plaintext
CMake Error: Could not create named generator Visual Studio 18 2026
The Cause
Because you have Visual Studio 2026 installed, the llama-cpp-sys-2 build script automatically attempted to invoke CMake with the -G "Visual Studio 18 2026" generator flag. However, your installed version of CMake was older and did not yet know what “Visual Studio 18 2026” was, causing it to reject the command.
The Suggested Solutions
We discussed two ways to bypass this version mismatch:
- Solution A: Upgrade CMake (Direct Fix)Upgrade CMake to a version (CMake 4.2 or newer) that natively supports and recognizes Visual Studio 2026 generators.
- Command:
winget upgrade Kitware.CMake
- Command:
- Solution B: Force the Ninja Build System (Recommended Bypass)Instead of letting CMake generate complex Visual Studio project files, force it to use Ninja—a lightweight, lightning-fast C/C++ build system that is highly recommended for building massive C++ libraries like
llama.cpp.- Install Ninja:
winget install Ninja-build.Ninja - Tell CMake to use it by setting the environment variable in your terminal before building:
- PowerShell:
$env:CMAKE_GENERATOR="Ninja" - CMD:
set CMAKE_GENERATOR=Ninja
- PowerShell:
- Compile your project using:
cargo run --release
- Install Ninja: