作者: 启鑫

  • Fedora 43 源码编译安装 llama.cpp 教程(支持 CUDA 显卡加速)

    在 Linux 环境下彻底释放显卡的高效推理潜能,源码编译 llama.cpp 带有 CUDA 加速的版本是最佳选择。本文将手把手带你在最新的 Fedora 43 系统(基于 CUDA 13.2 环境)中,从配置环境变量开始,一步步完成源码构建,打造完美契合你显卡算力的私有化大模型部署神器。

    1. 配置 CUDA 环境变量

    在编译之前,我们需要将 CUDA 的编译器 nvcc 和相关动态库路径写入系统的环境变量中,确保 CMake 能够准确识别。

    # 1. 将 CUDA 路径写入全局 shell 配置中
    cat >> ~/.bashrc << 'EOF'
    
    # NVIDIA CUDA Toolkit
    export PATH=/usr/local/cuda/bin:$PATH
    export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH
    EOF
    
    # 2. 使环境变量立即生效
    source ~/.bashrc
    
    # 3. 验证环境变量是否生效
    nvcc --version
    which nvcc
    
    

    提示:如果 nvcc –version 正确打印出了 CUDA 的版本号,说明路径配置成功,可以进行下一步。

    2. 获取源码与依赖安装

    确保系统里安装了基本的构建工具(cmake 和 gcc-c++)。

    # 安装基础编译依赖
    sudo dnf install -y cmake gcc-c++ git
    
    # 进入你的开发目录并克隆官方仓库
    mkdir -p ~/Dev && cd ~/Dev
    git clone https://github.com/ggml-org/llama.cpp
    cd llama.cpp
    
    

    3. 利用 CMake 执行 CUDA 加速编译

    为了让 llama.cpp 在运行时获得最佳性能,我们通过 CMake 指定启用 CUDA,并且将算力精准锁定在 86(对应 RTX 30 系列)。

    # 1. 安全起见,先清理可能存在的旧构建缓存
    rm -rf build
    
    # 2. 配置 CMake 编译选项
    cmake -B build \
          -DGGML_CUDA=ON \
          -DCMAKE_BUILD_TYPE=Release \
          -DCMAKE_CUDA_ARCHITECTURES=86 \
          -DGGML_CUDA_F16=ON \
          -DGGML_NATIVE=OFF
    
    # 3. 启动多核并行编译
    cmake --build build -j$(nproc)
    
    

    编译参数解析

    • -DGGML_CUDA=ON:核心开关,开启 NVIDIA GPU 的 CUDA 计算后端。
    • -DCMAKE_BUILD_TYPE=Release:开启高级编译器优化,大幅提升运行期推理速度。
    • -DCMAKE_CUDA_ARCHITECTURES=86:极其关键! 指定 GPU 架构。RTX 30 系列(如 3060 Ti、3070、3090)填写 86;如果你使用的是 RTX 40 系列,请改为 89。
    • -DGGML_NATIVE=OFF:关闭纯本地 CPU 强绑定优化,提升编译出的二进制文件在不同 CPU 架构间的兼容性。

    4. 验证编译结果

    编译完成后,可执行文件会被输出到 build/bin/ 目录下。我们需要验证程序能正常跑起来,且 GPU 加速已成功启用。

    4.1 验证基础版本信息

    ./build/bin/llama-cli --version
    
    

    如果输出显示了相应的版本号与 Git Commit 标识,说明程序本身编译无误。

    4.2 核心验证:检查 CUDA 参数是否就绪

    ./build/bin/llama-cli -h | grep -E "ngl|gpu|cuda|flash"
    
    

    运行后如果在输出中看到了如下关键控制参数,说明你的显卡已经可以整装待发了:

      -ngl N, --n-gpu-layers N  number of layers to store in VRAM
      --sm N, --split-mode N    how to split the model across multiple GPUs
      --flash-attn              enable Flash Attention
    
    

    特别是 -ngl(–n-gpu-layers),这是我们在运行大模型时,用来指定将多少层大模型放进显存(VRAM)中计算的核心参数。

    5. 部署大模型服务(llama-server)

    编译成功后,llama.cpp 提供了一个非常现代且支持 OpenAI 兼容接口的 Web 服务端程序,叫做 llama-server。我们可以直接用它把 GGUF 模型挂载为 API 服务。

    # 启动 API 服务端
    ./build/bin/llama-server \
      -m /path/to/your-model.gguf \
      --host 0.0.0.0 \
      --port 8080 \
      -ngl 99 \
      --ctx-size 4096
    
    

    核心启动参数调优说明:

    • –host 0.0.0.0 和 –port 8080:绑定所有网络接口并监听 8080 端口,不仅本地能调,局域网内的其他设备(如 HomeLab 中的 OpenWebUI)也能直接跨机器访问。
    • -ngl 99:告诉程序把模型的全部层(写 99 足够覆盖绝大多数 7B/14B 模型)都完全卸载到的显存中。如果模型太大导致显存溢出(OOM),可以适当调低该数值(如 24 或 32)。
    • –ctx-size 4096:分配 4096 长度的上下文窗口。

    启动后如何玩转?

    1. 原生 Web 界面:直接在浏览器打开 http://localhost:8080,即可使用 llama.cpp 内置的轻量化聊天面板。
    2. 对接第三方客户端:该服务完美兼容 OpenAI API 标准,接口地址为 http://localhost:8080/v1,可无缝接入 OpenWebUI、Cherry Studio 或 NextChat 等主流前端。

    编译过程

    # 配置 CMake 编译选项
    liqixin@fedora:~/Dev/llama.cpp$ cmake -B build -DGGML_CUDA=ON \
          -DCMAKE_BUILD_TYPE=Release \
          -DCMAKE_CUDA_ARCHITECTURES=86 \
          -DGGML_CUDA_F16=ON \
          -DGGML_NATIVE=OFF
    CMAKE_BUILD_TYPE=Release
    -- Warning: ccache not found - consider installing it for faster compilation or disable this warning with GGML_CCACHE=OFF
    -- CMAKE_SYSTEM_PROCESSOR: x86_64
    -- GGML_SYSTEM_ARCH: x86
    -- Including CPU backend
    -- x86 detected
    -- Adding CPU backend variant ggml-cpu: -msse4.2;-mf16c;-mfma;-mbmi2;-mavx;-mavx2 GGML_SSE42;GGML_F16C;GGML_FMA;GGML_BMI2;GGML_AVX;GGML_AVX2
    -- CUDA Toolkit found
    -- The CUDA compiler identification is NVIDIA 13.2.78 with host compiler GNU 15.2.1
    -- Detecting CUDA compiler ABI info
    -- Detecting CUDA compiler ABI info - done
    -- Check for working CUDA compiler: /usr/local/cuda/bin/nvcc - skipped
    -- Detecting CUDA compile features
    -- Detecting CUDA compile features - done
    -- Using CMAKE_CUDA_ARCHITECTURES=86 CMAKE_CUDA_ARCHITECTURES_NATIVE=86-real
    -- Could NOT find NCCL (missing: NCCL_LIBRARY NCCL_INCLUDE_DIR) 
    -- Warning: NCCL not found, performance for multiple CUDA GPUs will be suboptimal
    -- CUDA host compiler is GNU 15.2.1
    -- Including CUDA backend
    -- ggml version: 0.12.0
    -- ggml commit:  4f0e43da6
    -- Found OpenSSL: /usr/lib64/libcrypto.so (found version "3.5.4")
    -- Performing Test OPENSSL_VERSION_SUPPORTED
    -- Performing Test OPENSSL_VERSION_SUPPORTED - Success
    -- OpenSSL found: 3.5.4
    -- UI: derived HF_UI_VERSION=b9282
    -- UI: embedded with source: provisioned
    -- Generating embedded license file for target: llama-common
    -- Configuring done (2.2s)
    -- Generating done (0.1s)
    -- Build files have been written to: /home/liqixin/Dev/llama.cpp/build
    # 执行编译(Build)
    liqixin@fedora:~/Dev/llama.cpp$ cmake --build build -j$(nproc)
    [  0%] Building/provisioning UI assets (npm build -> HF Bucket fallback)
    [  1%] Building C object examples/gguf-hash/CMakeFiles/xxhash.dir/deps/xxhash/xxhash.c.o
    [  1%] Building CXX object ggml/src/CMakeFiles/ggml-base.dir/ggml-backend.cpp.o
    [  1%] Building CXX object common/CMakeFiles/llama-common-base.dir/build-info.cpp.o
    [  1%] Building C object ggml/src/CMakeFiles/ggml-base.dir/ggml.c.o
    [  2%] Building C object ggml/src/CMakeFiles/ggml-base.dir/ggml-alloc.c.o
    [  2%] Building C object examples/gguf-hash/CMakeFiles/sha256.dir/deps/sha256/sha256.c.o
    [  2%] Building CXX object tools/mtmd/CMakeFiles/llama-llava-cli.dir/deprecation-warning.cpp.o
    [  2%] Building CXX object ggml/src/CMakeFiles/ggml-base.dir/ggml.cpp.o
    [  2%] Building CXX object ggml/src/CMakeFiles/ggml-base.dir/ggml-backend-meta.cpp.o
    [  2%] Building CXX object tools/mtmd/CMakeFiles/llama-minicpmv-cli.dir/deprecation-warning.cpp.o
    [  2%] Building CXX object ggml/src/CMakeFiles/ggml-base.dir/ggml-opt.cpp.o
    [  3%] Building CXX object ggml/src/CMakeFiles/ggml-base.dir/ggml-threading.cpp.o
    [  3%] Building C object ggml/src/CMakeFiles/ggml-base.dir/ggml-quants.c.o
    [  3%] Building CXX object vendor/cpp-httplib/CMakeFiles/cpp-httplib.dir/httplib.cpp.o
    [  3%] Building CXX object tools/mtmd/CMakeFiles/llama-gemma3-cli.dir/deprecation-warning.cpp.o
    [  3%] Building CXX object ggml/src/CMakeFiles/ggml-base.dir/gguf.cpp.o
    -- UI: npm not found, skipping npm build and trying HF Bucket download
    -- UI: downloading assets from version: https://huggingface.co/buckets/ggml-org/llama-ui/resolve/b9282
    [  3%] Building C object examples/gguf-hash/CMakeFiles/sha1.dir/deps/sha1/sha1.c.o
    [  3%] Building CXX object tools/mtmd/CMakeFiles/llama-qwen2vl-cli.dir/deprecation-warning.cpp.o
    [  3%] Built target sha1
    [  3%] Linking CXX executable ../../bin/llama-llava-cli
    [  3%] Linking CXX executable ../../bin/llama-gemma3-cli
    [  3%] Linking CXX executable ../../bin/llama-qwen2vl-cli
    [  3%] Built target sha256
    [  3%] Linking CXX static library libllama-common-base.a
    [  3%] Linking CXX executable ../../bin/llama-minicpmv-cli
    [  3%] Built target llama-llava-cli
    [  3%] Built target llama-common-base
    [  3%] Built target llama-gemma3-cli
    [  3%] Built target llama-qwen2vl-cli
    [  3%] Built target llama-minicpmv-cli
    -- UI: failed to download index.html from version: "HTTP response code said error"
    -- UI: downloading assets from latest: https://huggingface.co/buckets/ggml-org/llama-ui/resolve/latest
    [  3%] Built target xxhash
    -- UI: downloaded index.html
    [  3%] Linking CXX shared library ../../bin/libggml-base.so
    [  3%] Built target ggml-base
    [  4%] Building CXX object ggml/src/CMakeFiles/ggml-cpu.dir/ggml-cpu/hbm.cpp.o
    [  4%] Building CXX object ggml/src/CMakeFiles/ggml-cpu.dir/ggml-cpu/repack.cpp.o
    [  4%] Building C object ggml/src/CMakeFiles/ggml-cpu.dir/ggml-cpu/quants.c.o
    [  4%] Building CXX object ggml/src/CMakeFiles/ggml-cpu.dir/ggml-cpu/amx/amx.cpp.o
    [  4%] Building CXX object ggml/src/CMakeFiles/ggml-cpu.dir/ggml-cpu/traits.cpp.o
    [  4%] Building CXX object ggml/src/CMakeFiles/ggml-cpu.dir/ggml-cpu/binary-ops.cpp.o
    [  4%] Building C object ggml/src/CMakeFiles/ggml-cpu.dir/ggml-cpu/ggml-cpu.c.o
    [  5%] Building CXX object ggml/src/CMakeFiles/ggml-cpu.dir/ggml-cpu/unary-ops.cpp.o
    [  4%] Building CXX object ggml/src/CMakeFiles/ggml-cpu.dir/ggml-cpu/vec.cpp.o
    [  5%] Building CXX object ggml/src/CMakeFiles/ggml-cpu.dir/ggml-cpu/ggml-cpu.cpp.o
    [  5%] Building CXX object ggml/src/CMakeFiles/ggml-cpu.dir/ggml-cpu/ops.cpp.o
    [  5%] Building CXX object ggml/src/CMakeFiles/ggml-cpu.dir/ggml-cpu/llamafile/sgemm.cpp.o
    [  5%] Building C object ggml/src/CMakeFiles/ggml-cpu.dir/ggml-cpu/arch/x86/quants.c.o
    [  5%] Building CXX object ggml/src/CMakeFiles/ggml-cpu.dir/ggml-cpu/arch/x86/repack.cpp.o
    [  5%] Building CUDA object ggml/src/ggml-cuda/CMakeFiles/ggml-cuda.dir/allreduce.cu.o
    [  5%] Building CUDA object ggml/src/ggml-cuda/CMakeFiles/ggml-cuda.dir/acc.cu.o
    [  5%] Building CXX object ggml/src/CMakeFiles/ggml-cpu.dir/ggml-cpu/amx/mmq.cpp.o
    [  5%] Building CUDA object ggml/src/ggml-cuda/CMakeFiles/ggml-cuda.dir/add-id.cu.o
    [  5%] Building CUDA object ggml/src/ggml-cuda/CMakeFiles/ggml-cuda.dir/arange.cu.o
    -- UI: downloaded bundle.js
    [  5%] Building CUDA object ggml/src/ggml-cuda/CMakeFiles/ggml-cuda.dir/argmax.cu.o
    [  5%] Building CUDA object ggml/src/ggml-cuda/CMakeFiles/ggml-cuda.dir/argsort.cu.o
    [  6%] Building CUDA object ggml/src/ggml-cuda/CMakeFiles/ggml-cuda.dir/binbcast.cu.o
    [  6%] Building CUDA object ggml/src/ggml-cuda/CMakeFiles/ggml-cuda.dir/clamp.cu.o
    [  6%] Building CUDA object ggml/src/ggml-cuda/CMakeFiles/ggml-cuda.dir/concat.cu.o
    [  6%] Building CUDA object ggml/src/ggml-cuda/CMakeFiles/ggml-cuda.dir/conv-transpose-1d.cu.o
    [  6%] Building CUDA object ggml/src/ggml-cuda/CMakeFiles/ggml-cuda.dir/conv2d-dw.cu.o
    [  6%] Building CUDA object ggml/src/ggml-cuda/CMakeFiles/ggml-cuda.dir/conv2d-transpose.cu.o
    -- UI: downloaded bundle.css
    [  6%] Building CUDA object ggml/src/ggml-cuda/CMakeFiles/ggml-cuda.dir/conv2d.cu.o
    [  7%] Building CUDA object ggml/src/ggml-cuda/CMakeFiles/ggml-cuda.dir/convert.cu.o
    [  7%] Building CUDA object ggml/src/ggml-cuda/CMakeFiles/ggml-cuda.dir/count-equal.cu.o
    [  7%] Building CUDA object ggml/src/ggml-cuda/CMakeFiles/ggml-cuda.dir/cpy.cu.o
    [  7%] Building CUDA object ggml/src/ggml-cuda/CMakeFiles/ggml-cuda.dir/cross-entropy-loss.cu.o
    [  7%] Building CUDA object ggml/src/ggml-cuda/CMakeFiles/ggml-cuda.dir/cumsum.cu.o
    [  7%] Building CUDA object ggml/src/ggml-cuda/CMakeFiles/ggml-cuda.dir/diag.cu.o
    [  8%] Building CUDA object ggml/src/ggml-cuda/CMakeFiles/ggml-cuda.dir/diagmask.cu.o
    -- UI: downloaded loading.html
    [  8%] Building CUDA object ggml/src/ggml-cuda/CMakeFiles/ggml-cuda.dir/fattn-tile.cu.o
    [  8%] Building CUDA object ggml/src/ggml-cuda/CMakeFiles/ggml-cuda.dir/fattn-wmma-f16.cu.o
    [  8%] Building CUDA object ggml/src/ggml-cuda/CMakeFiles/ggml-cuda.dir/fattn.cu.o
    [  8%] Building CUDA object ggml/src/ggml-cuda/CMakeFiles/ggml-cuda.dir/fill.cu.o
    -- UI: verifying checksums...
    -- UI: all checksums verified
    -- UI: provisioning complete
    [  8%] Generating loading.html.hpp
    [  8%] Generating bundle.css.hpp
    [  8%] Generating bundle.js.hpp
    [  8%] Generating index.html.hpp
    [  8%] Building CUDA object ggml/src/ggml-cuda/CMakeFiles/ggml-cuda.dir/getrows.cu.o
    [  8%] Building CUDA object ggml/src/ggml-cuda/CMakeFiles/ggml-cuda.dir/gated_delta_net.cu.o
    [  9%] Building CUDA object ggml/src/ggml-cuda/CMakeFiles/ggml-cuda.dir/ggml-cuda.cu.o
    [  9%] Building CUDA object ggml/src/ggml-cuda/CMakeFiles/ggml-cuda.dir/gla.cu.o
    [  9%] Building CUDA object ggml/src/ggml-cuda/CMakeFiles/ggml-cuda.dir/im2col.cu.o
    [  9%] Building CUDA object ggml/src/ggml-cuda/CMakeFiles/ggml-cuda.dir/mean.cu.o
    [  9%] Building CUDA object ggml/src/ggml-cuda/CMakeFiles/ggml-cuda.dir/mmf.cu.o
    [ 10%] Building CUDA object ggml/src/ggml-cuda/CMakeFiles/ggml-cuda.dir/mmid.cu.o
    [ 10%] Building CUDA object ggml/src/ggml-cuda/CMakeFiles/ggml-cuda.dir/mmq.cu.o
    [ 10%] Building CUDA object ggml/src/ggml-cuda/CMakeFiles/ggml-cuda.dir/mmvf.cu.o
    [ 10%] Building CUDA object ggml/src/ggml-cuda/CMakeFiles/ggml-cuda.dir/mmvq.cu.o
    [ 10%] Building CUDA object ggml/src/ggml-cuda/CMakeFiles/ggml-cuda.dir/norm.cu.o
    [ 11%] Linking CXX shared library ../../bin/libggml-cpu.so
    [ 11%] Building CUDA object ggml/src/ggml-cuda/CMakeFiles/ggml-cuda.dir/opt-step-adamw.cu.o
    [ 11%] Built target ggml-cpu
    [ 11%] Building CUDA object ggml/src/ggml-cuda/CMakeFiles/ggml-cuda.dir/opt-step-sgd.cu.o
    [ 11%] Building CUDA object ggml/src/ggml-cuda/CMakeFiles/ggml-cuda.dir/out-prod.cu.o
    [ 12%] Building CUDA object ggml/src/ggml-cuda/CMakeFiles/ggml-cuda.dir/pad.cu.o
    [ 12%] Building CUDA object ggml/src/ggml-cuda/CMakeFiles/ggml-cuda.dir/pad_reflect_1d.cu.o
    [ 13%] Building CXX object tools/ui/CMakeFiles/llama-ui.dir/ui.cpp.o
    [ 13%] Building CUDA object ggml/src/ggml-cuda/CMakeFiles/ggml-cuda.dir/pool2d.cu.o
    [ 13%] Building CUDA object ggml/src/ggml-cuda/CMakeFiles/ggml-cuda.dir/quantize.cu.o
    [ 13%] Building CUDA object ggml/src/ggml-cuda/CMakeFiles/ggml-cuda.dir/roll.cu.o
    [ 13%] Linking CXX static library libllama-ui.a
    [ 13%] Built target llama-ui
    [ 13%] Building CUDA object ggml/src/ggml-cuda/CMakeFiles/ggml-cuda.dir/rope.cu.o
    [ 14%] Building CUDA object ggml/src/ggml-cuda/CMakeFiles/ggml-cuda.dir/scale.cu.o
    [ 14%] Building CUDA object ggml/src/ggml-cuda/CMakeFiles/ggml-cuda.dir/set-rows.cu.o
    [ 14%] Building CUDA object ggml/src/ggml-cuda/CMakeFiles/ggml-cuda.dir/set.cu.o
    [ 14%] Building CUDA object ggml/src/ggml-cuda/CMakeFiles/ggml-cuda.dir/snake.cu.o
    [ 14%] Building CUDA object ggml/src/ggml-cuda/CMakeFiles/ggml-cuda.dir/softcap.cu.o
    [ 14%] Building CUDA object ggml/src/ggml-cuda/CMakeFiles/ggml-cuda.dir/softmax.cu.o
    [ 14%] Building CUDA object ggml/src/ggml-cuda/CMakeFiles/ggml-cuda.dir/solve_tri.cu.o
    [ 15%] Building CUDA object ggml/src/ggml-cuda/CMakeFiles/ggml-cuda.dir/ssm-conv.cu.o
    [ 15%] Building CUDA object ggml/src/ggml-cuda/CMakeFiles/ggml-cuda.dir/ssm-scan.cu.o
    [ 15%] Building CUDA object ggml/src/ggml-cuda/CMakeFiles/ggml-cuda.dir/sum.cu.o
    [ 15%] Building CUDA object ggml/src/ggml-cuda/CMakeFiles/ggml-cuda.dir/sumrows.cu.o
    [ 15%] Building CUDA object ggml/src/ggml-cuda/CMakeFiles/ggml-cuda.dir/top-k.cu.o
    [ 15%] Linking CXX static library libcpp-httplib.a
    [ 15%] Built target cpp-httplib
    [ 15%] Building CUDA object ggml/src/ggml-cuda/CMakeFiles/ggml-cuda.dir/topk-moe.cu.o
    [ 15%] Building CUDA object ggml/src/ggml-cuda/CMakeFiles/ggml-cuda.dir/tri.cu.o
    [ 16%] Building CUDA object ggml/src/ggml-cuda/CMakeFiles/ggml-cuda.dir/tsembd.cu.o
    [ 16%] Building CUDA object ggml/src/ggml-cuda/CMakeFiles/ggml-cuda.dir/unary.cu.o
    [ 16%] Building CUDA object ggml/src/ggml-cuda/CMakeFiles/ggml-cuda.dir/upscale.cu.o
    [ 16%] Building CUDA object ggml/src/ggml-cuda/CMakeFiles/ggml-cuda.dir/wkv.cu.o
    [ 16%] Building CUDA object ggml/src/ggml-cuda/CMakeFiles/ggml-cuda.dir/template-instances/fattn-tile-instance-dkq112-dv112.cu.o
    [ 16%] Building CUDA object ggml/src/ggml-cuda/CMakeFiles/ggml-cuda.dir/template-instances/fattn-tile-instance-dkq128-dv128.cu.o
    [ 17%] Building CUDA object ggml/src/ggml-cuda/CMakeFiles/ggml-cuda.dir/template-instances/fattn-tile-instance-dkq192-dv128.cu.o
    [ 17%] Building CUDA object ggml/src/ggml-cuda/CMakeFiles/ggml-cuda.dir/template-instances/fattn-tile-instance-dkq256-dv256.cu.o
    [ 17%] Building CUDA object ggml/src/ggml-cuda/CMakeFiles/ggml-cuda.dir/template-instances/fattn-tile-instance-dkq320-dv256.cu.o
    [ 17%] Building CUDA object ggml/src/ggml-cuda/CMakeFiles/ggml-cuda.dir/template-instances/fattn-tile-instance-dkq40-dv40.cu.o
    [ 17%] Building CUDA object ggml/src/ggml-cuda/CMakeFiles/ggml-cuda.dir/template-instances/fattn-tile-instance-dkq512-dv512.cu.o
    [ 17%] Building CUDA object ggml/src/ggml-cuda/CMakeFiles/ggml-cuda.dir/template-instances/fattn-tile-instance-dkq576-dv512.cu.o
    [ 17%] Building CUDA object ggml/src/ggml-cuda/CMakeFiles/ggml-cuda.dir/template-instances/fattn-tile-instance-dkq64-dv64.cu.o
    [ 18%] Building CUDA object ggml/src/ggml-cuda/CMakeFiles/ggml-cuda.dir/template-instances/fattn-tile-instance-dkq72-dv72.cu.o
    [ 18%] Building CUDA object ggml/src/ggml-cuda/CMakeFiles/ggml-cuda.dir/template-instances/fattn-tile-instance-dkq80-dv80.cu.o
    [ 18%] Building CUDA object ggml/src/ggml-cuda/CMakeFiles/ggml-cuda.dir/template-instances/fattn-tile-instance-dkq96-dv96.cu.o
    [ 18%] Building CUDA object ggml/src/ggml-cuda/CMakeFiles/ggml-cuda.dir/template-instances/fattn-mma-f16-instance-ncols1_1-ncols2_16.cu.o
    [ 18%] Building CUDA object ggml/src/ggml-cuda/CMakeFiles/ggml-cuda.dir/template-instances/fattn-mma-f16-instance-ncols1_1-ncols2_32.cu.o
    [ 18%] Building CUDA object ggml/src/ggml-cuda/CMakeFiles/ggml-cuda.dir/template-instances/fattn-mma-f16-instance-ncols1_1-ncols2_8.cu.o
    [ 19%] Building CUDA object ggml/src/ggml-cuda/CMakeFiles/ggml-cuda.dir/template-instances/fattn-mma-f16-instance-ncols1_16-ncols2_1.cu.o
    [ 19%] Building CUDA object ggml/src/ggml-cuda/CMakeFiles/ggml-cuda.dir/template-instances/fattn-mma-f16-instance-ncols1_16-ncols2_2.cu.o
    [ 19%] Building CUDA object ggml/src/ggml-cuda/CMakeFiles/ggml-cuda.dir/template-instances/fattn-mma-f16-instance-ncols1_16-ncols2_4.cu.o
    [ 19%] Building CUDA object ggml/src/ggml-cuda/CMakeFiles/ggml-cuda.dir/template-instances/fattn-mma-f16-instance-ncols1_2-ncols2_16.cu.o
    [ 19%] Building CUDA object ggml/src/ggml-cuda/CMakeFiles/ggml-cuda.dir/template-instances/fattn-mma-f16-instance-ncols1_2-ncols2_32.cu.o
    [ 19%] Building CUDA object ggml/src/ggml-cuda/CMakeFiles/ggml-cuda.dir/template-instances/fattn-mma-f16-instance-ncols1_2-ncols2_4.cu.o
    [ 19%] Building CUDA object ggml/src/ggml-cuda/CMakeFiles/ggml-cuda.dir/template-instances/fattn-mma-f16-instance-ncols1_2-ncols2_8.cu.o
    [ 20%] Building CUDA object ggml/src/ggml-cuda/CMakeFiles/ggml-cuda.dir/template-instances/fattn-mma-f16-instance-ncols1_32-ncols2_1.cu.o
    [ 20%] Building CUDA object ggml/src/ggml-cuda/CMakeFiles/ggml-cuda.dir/template-instances/fattn-mma-f16-instance-ncols1_32-ncols2_2.cu.o
    [ 20%] Building CUDA object ggml/src/ggml-cuda/CMakeFiles/ggml-cuda.dir/template-instances/fattn-mma-f16-instance-ncols1_4-ncols2_16.cu.o
    [ 20%] Building CUDA object ggml/src/ggml-cuda/CMakeFiles/ggml-cuda.dir/template-instances/fattn-mma-f16-instance-ncols1_4-ncols2_2.cu.o
    [ 20%] Building CUDA object ggml/src/ggml-cuda/CMakeFiles/ggml-cuda.dir/template-instances/fattn-mma-f16-instance-ncols1_4-ncols2_4.cu.o
    [ 20%] Building CUDA object ggml/src/ggml-cuda/CMakeFiles/ggml-cuda.dir/template-instances/fattn-mma-f16-instance-ncols1_4-ncols2_8.cu.o
    [ 20%] Building CUDA object ggml/src/ggml-cuda/CMakeFiles/ggml-cuda.dir/template-instances/fattn-mma-f16-instance-ncols1_64-ncols2_1.cu.o
    [ 21%] Building CUDA object ggml/src/ggml-cuda/CMakeFiles/ggml-cuda.dir/template-instances/fattn-mma-f16-instance-ncols1_8-ncols2_1.cu.o
    [ 21%] Building CUDA object ggml/src/ggml-cuda/CMakeFiles/ggml-cuda.dir/template-instances/fattn-mma-f16-instance-ncols1_8-ncols2_2.cu.o
    [ 21%] Building CUDA object ggml/src/ggml-cuda/CMakeFiles/ggml-cuda.dir/template-instances/fattn-mma-f16-instance-ncols1_8-ncols2_4.cu.o
    [ 21%] Building CUDA object ggml/src/ggml-cuda/CMakeFiles/ggml-cuda.dir/template-instances/fattn-mma-f16-instance-ncols1_8-ncols2_8.cu.o
    [ 21%] Building CUDA object ggml/src/ggml-cuda/CMakeFiles/ggml-cuda.dir/template-instances/mmq-instance-iq1_s.cu.o
    [ 21%] Building CUDA object ggml/src/ggml-cuda/CMakeFiles/ggml-cuda.dir/template-instances/mmq-instance-iq2_s.cu.o
    [ 22%] Building CUDA object ggml/src/ggml-cuda/CMakeFiles/ggml-cuda.dir/template-instances/mmq-instance-iq2_xs.cu.o
    [ 22%] Building CUDA object ggml/src/ggml-cuda/CMakeFiles/ggml-cuda.dir/template-instances/mmq-instance-iq2_xxs.cu.o
    [ 22%] Building CUDA object ggml/src/ggml-cuda/CMakeFiles/ggml-cuda.dir/template-instances/mmq-instance-iq3_s.cu.o
    [ 22%] Building CUDA object ggml/src/ggml-cuda/CMakeFiles/ggml-cuda.dir/template-instances/mmq-instance-iq3_xxs.cu.o
    [ 22%] Building CUDA object ggml/src/ggml-cuda/CMakeFiles/ggml-cuda.dir/template-instances/mmq-instance-iq4_nl.cu.o
    [ 22%] Building CUDA object ggml/src/ggml-cuda/CMakeFiles/ggml-cuda.dir/template-instances/mmq-instance-iq4_xs.cu.o
    [ 22%] Building CUDA object ggml/src/ggml-cuda/CMakeFiles/ggml-cuda.dir/template-instances/mmq-instance-mxfp4.cu.o
    [ 23%] Building CUDA object ggml/src/ggml-cuda/CMakeFiles/ggml-cuda.dir/template-instances/mmq-instance-nvfp4.cu.o
    [ 23%] Building CUDA object ggml/src/ggml-cuda/CMakeFiles/ggml-cuda.dir/template-instances/mmq-instance-q1_0.cu.o
    [ 23%] Building CUDA object ggml/src/ggml-cuda/CMakeFiles/ggml-cuda.dir/template-instances/mmq-instance-q2_k.cu.o
    [ 23%] Building CUDA object ggml/src/ggml-cuda/CMakeFiles/ggml-cuda.dir/template-instances/mmq-instance-q3_k.cu.o
    [ 23%] Building CUDA object ggml/src/ggml-cuda/CMakeFiles/ggml-cuda.dir/template-instances/mmq-instance-q4_0.cu.o
    [ 23%] Building CUDA object ggml/src/ggml-cuda/CMakeFiles/ggml-cuda.dir/template-instances/mmq-instance-q4_1.cu.o
    [ 24%] Building CUDA object ggml/src/ggml-cuda/CMakeFiles/ggml-cuda.dir/template-instances/mmq-instance-q4_k.cu.o
    [ 24%] Building CUDA object ggml/src/ggml-cuda/CMakeFiles/ggml-cuda.dir/template-instances/mmq-instance-q5_0.cu.o
    [ 24%] Building CUDA object ggml/src/ggml-cuda/CMakeFiles/ggml-cuda.dir/template-instances/mmq-instance-q5_1.cu.o
    [ 24%] Building CUDA object ggml/src/ggml-cuda/CMakeFiles/ggml-cuda.dir/template-instances/mmq-instance-q5_k.cu.o
    [ 24%] Building CUDA object ggml/src/ggml-cuda/CMakeFiles/ggml-cuda.dir/template-instances/mmq-instance-q6_k.cu.o
    [ 24%] Building CUDA object ggml/src/ggml-cuda/CMakeFiles/ggml-cuda.dir/template-instances/mmq-instance-q8_0.cu.o
    [ 24%] Building CUDA object ggml/src/ggml-cuda/CMakeFiles/ggml-cuda.dir/template-instances/mmf-instance-ncols_1.cu.o
    [ 25%] Building CUDA object ggml/src/ggml-cuda/CMakeFiles/ggml-cuda.dir/template-instances/mmf-instance-ncols_10.cu.o
    [ 25%] Building CUDA object ggml/src/ggml-cuda/CMakeFiles/ggml-cuda.dir/template-instances/mmf-instance-ncols_11.cu.o
    [ 25%] Building CUDA object ggml/src/ggml-cuda/CMakeFiles/ggml-cuda.dir/template-instances/mmf-instance-ncols_12.cu.o
    [ 25%] Building CUDA object ggml/src/ggml-cuda/CMakeFiles/ggml-cuda.dir/template-instances/mmf-instance-ncols_13.cu.o
    [ 25%] Building CUDA object ggml/src/ggml-cuda/CMakeFiles/ggml-cuda.dir/template-instances/mmf-instance-ncols_14.cu.o
    [ 25%] Building CUDA object ggml/src/ggml-cuda/CMakeFiles/ggml-cuda.dir/template-instances/mmf-instance-ncols_15.cu.o
    [ 26%] Building CUDA object ggml/src/ggml-cuda/CMakeFiles/ggml-cuda.dir/template-instances/mmf-instance-ncols_16.cu.o
    [ 26%] Building CUDA object ggml/src/ggml-cuda/CMakeFiles/ggml-cuda.dir/template-instances/mmf-instance-ncols_2.cu.o
    [ 26%] Building CUDA object ggml/src/ggml-cuda/CMakeFiles/ggml-cuda.dir/template-instances/mmf-instance-ncols_3.cu.o
    [ 26%] Building CUDA object ggml/src/ggml-cuda/CMakeFiles/ggml-cuda.dir/template-instances/mmf-instance-ncols_4.cu.o
    [ 26%] Building CUDA object ggml/src/ggml-cuda/CMakeFiles/ggml-cuda.dir/template-instances/mmf-instance-ncols_5.cu.o
    [ 26%] Building CUDA object ggml/src/ggml-cuda/CMakeFiles/ggml-cuda.dir/template-instances/mmf-instance-ncols_6.cu.o
    [ 26%] Building CUDA object ggml/src/ggml-cuda/CMakeFiles/ggml-cuda.dir/template-instances/mmf-instance-ncols_7.cu.o
    [ 27%] Building CUDA object ggml/src/ggml-cuda/CMakeFiles/ggml-cuda.dir/template-instances/mmf-instance-ncols_8.cu.o
    [ 27%] Building CUDA object ggml/src/ggml-cuda/CMakeFiles/ggml-cuda.dir/template-instances/mmf-instance-ncols_9.cu.o
    [ 27%] Building CUDA object ggml/src/ggml-cuda/CMakeFiles/ggml-cuda.dir/template-instances/fattn-vec-instance-f16-f16.cu.o
    [ 27%] Building CUDA object ggml/src/ggml-cuda/CMakeFiles/ggml-cuda.dir/template-instances/fattn-vec-instance-q4_0-q4_0.cu.o
    [ 27%] Building CUDA object ggml/src/ggml-cuda/CMakeFiles/ggml-cuda.dir/template-instances/fattn-vec-instance-q8_0-q8_0.cu.o
    [ 27%] Building CUDA object ggml/src/ggml-cuda/CMakeFiles/ggml-cuda.dir/template-instances/fattn-vec-instance-bf16-bf16.cu.o
    [ 27%] Linking CUDA shared library ../../../bin/libggml-cuda.so
    [ 27%] Built target ggml-cuda
    [ 27%] Building CXX object ggml/src/CMakeFiles/ggml.dir/ggml-backend-dl.cpp.o
    [ 27%] Building CXX object ggml/src/CMakeFiles/ggml.dir/ggml-backend-reg.cpp.o
    [ 28%] Linking CXX shared library ../../bin/libggml.so
    [ 28%] Built target ggml
    [ 28%] Building CXX object examples/gguf/CMakeFiles/llama-gguf.dir/gguf.cpp.o
    [ 28%] Building CXX object examples/gguf-hash/CMakeFiles/llama-gguf-hash.dir/gguf-hash.cpp.o
    [ 28%] Building CXX object src/CMakeFiles/llama.dir/llama.cpp.o
    [ 28%] Building CXX object src/CMakeFiles/llama.dir/llama-batch.cpp.o
    [ 29%] Building CXX object src/CMakeFiles/llama.dir/llama-context.cpp.o
    [ 29%] Building CXX object src/CMakeFiles/llama.dir/llama-chat.cpp.o
    [ 29%] Building CXX object src/CMakeFiles/llama.dir/llama-adapter.cpp.o
    [ 29%] Building CXX object src/CMakeFiles/llama.dir/llama-grammar.cpp.o
    [ 29%] Building CXX object src/CMakeFiles/llama.dir/llama-arch.cpp.o
    [ 29%] Building CXX object src/CMakeFiles/llama.dir/llama-graph.cpp.o
    [ 29%] Building CXX object src/CMakeFiles/llama.dir/llama-impl.cpp.o
    [ 29%] Building CXX object src/CMakeFiles/llama.dir/llama-kv-cache.cpp.o
    [ 30%] Building CXX object src/CMakeFiles/llama.dir/llama-kv-cache-iswa.cpp.o
    [ 30%] Building CXX object src/CMakeFiles/llama.dir/llama-io.cpp.o
    [ 30%] Building CXX object src/CMakeFiles/llama.dir/llama-hparams.cpp.o
    [ 30%] Building CXX object src/CMakeFiles/llama.dir/llama-memory.cpp.o
    [ 31%] Building CXX object src/CMakeFiles/llama.dir/llama-memory-recurrent.cpp.o
    [ 31%] Building CXX object src/CMakeFiles/llama.dir/llama-cparams.cpp.o
    [ 31%] Building CXX object src/CMakeFiles/llama.dir/llama-memory-hybrid-iswa.cpp.o
    [ 31%] Building CXX object src/CMakeFiles/llama.dir/llama-memory-hybrid.cpp.o
    [ 31%] Building CXX object src/CMakeFiles/llama.dir/llama-mmap.cpp.o
    [ 31%] Building CXX object src/CMakeFiles/llama.dir/llama-model-loader.cpp.o
    [ 31%] Building CXX object src/CMakeFiles/llama.dir/llama-model-saver.cpp.o
    [ 31%] Building CXX object src/CMakeFiles/llama.dir/llama-model.cpp.o
    [ 31%] Building CXX object src/CMakeFiles/llama.dir/llama-quant.cpp.o
    [ 31%] Linking CXX executable ../../bin/llama-gguf-hash
    [ 31%] Building CXX object src/CMakeFiles/llama.dir/llama-sampler.cpp.o
    [ 32%] Linking CXX executable ../../bin/llama-gguf
    [ 33%] Building CXX object src/CMakeFiles/llama.dir/llama-vocab.cpp.o
    [ 33%] Built target llama-gguf-hash
    [ 33%] Building CXX object src/CMakeFiles/llama.dir/unicode-data.cpp.o
    [ 33%] Built target llama-gguf
    [ 33%] Building CXX object src/CMakeFiles/llama.dir/unicode.cpp.o
    [ 33%] Building CXX object src/CMakeFiles/llama.dir/models/afmoe.cpp.o
    [ 33%] Building CXX object src/CMakeFiles/llama.dir/models/apertus.cpp.o
    [ 33%] Building CXX object src/CMakeFiles/llama.dir/models/arcee.cpp.o
    [ 34%] Building CXX object src/CMakeFiles/llama.dir/models/arctic.cpp.o
    [ 34%] Building CXX object src/CMakeFiles/llama.dir/models/arwkv7.cpp.o
    [ 34%] Building CXX object src/CMakeFiles/llama.dir/models/baichuan.cpp.o
    [ 34%] Building CXX object src/CMakeFiles/llama.dir/models/bailingmoe.cpp.o
    [ 34%] Building CXX object src/CMakeFiles/llama.dir/models/bailingmoe2.cpp.o
    [ 34%] Building CXX object src/CMakeFiles/llama.dir/models/bert.cpp.o
    [ 34%] Building CXX object src/CMakeFiles/llama.dir/models/bitnet.cpp.o
    [ 35%] Building CXX object src/CMakeFiles/llama.dir/models/bloom.cpp.o
    [ 35%] Building CXX object src/CMakeFiles/llama.dir/models/chameleon.cpp.o
    [ 35%] Building CXX object src/CMakeFiles/llama.dir/models/chatglm.cpp.o
    [ 35%] Building CXX object src/CMakeFiles/llama.dir/models/codeshell.cpp.o
    [ 35%] Building CXX object src/CMakeFiles/llama.dir/models/cogvlm.cpp.o
    [ 35%] Building CXX object src/CMakeFiles/llama.dir/models/cohere2.cpp.o
    [ 35%] Building CXX object src/CMakeFiles/llama.dir/models/command-r.cpp.o
    [ 36%] Building CXX object src/CMakeFiles/llama.dir/models/dbrx.cpp.o
    [ 36%] Building CXX object src/CMakeFiles/llama.dir/models/deci.cpp.o
    [ 36%] Building CXX object src/CMakeFiles/llama.dir/models/deepseek.cpp.o
    [ 36%] Building CXX object src/CMakeFiles/llama.dir/models/deepseek2.cpp.o
    [ 36%] Building CXX object src/CMakeFiles/llama.dir/models/deepseek2ocr.cpp.o
    [ 36%] Building CXX object src/CMakeFiles/llama.dir/models/delta-net-base.cpp.o
    [ 37%] Building CXX object src/CMakeFiles/llama.dir/models/dots1.cpp.o
    [ 37%] Building CXX object src/CMakeFiles/llama.dir/models/dream.cpp.o
    [ 37%] Building CXX object src/CMakeFiles/llama.dir/models/ernie4-5-moe.cpp.o
    [ 37%] Building CXX object src/CMakeFiles/llama.dir/models/ernie4-5.cpp.o
    [ 37%] Building CXX object src/CMakeFiles/llama.dir/models/eurobert.cpp.o
    [ 37%] Building CXX object src/CMakeFiles/llama.dir/models/exaone-moe.cpp.o
    [ 38%] Building CXX object src/CMakeFiles/llama.dir/models/exaone.cpp.o
    [ 38%] Building CXX object src/CMakeFiles/llama.dir/models/exaone4.cpp.o
    [ 38%] Building CXX object src/CMakeFiles/llama.dir/models/falcon-h1.cpp.o
    [ 38%] Building CXX object src/CMakeFiles/llama.dir/models/falcon.cpp.o
    [ 38%] Building CXX object src/CMakeFiles/llama.dir/models/gemma-embedding.cpp.o
    [ 38%] Building CXX object src/CMakeFiles/llama.dir/models/gemma.cpp.o
    [ 38%] Building CXX object src/CMakeFiles/llama.dir/models/gemma2.cpp.o
    [ 39%] Building CXX object src/CMakeFiles/llama.dir/models/gemma3.cpp.o
    [ 39%] Building CXX object src/CMakeFiles/llama.dir/models/gemma3n.cpp.o
    [ 39%] Building CXX object src/CMakeFiles/llama.dir/models/gemma4.cpp.o
    [ 39%] Building CXX object src/CMakeFiles/llama.dir/models/glm-dsa.cpp.o
    [ 39%] Building CXX object src/CMakeFiles/llama.dir/models/glm4-moe.cpp.o
    [ 39%] Building CXX object src/CMakeFiles/llama.dir/models/glm4.cpp.o
    [ 39%] Building CXX object src/CMakeFiles/llama.dir/models/gpt2.cpp.o
    [ 40%] Building CXX object src/CMakeFiles/llama.dir/models/gptneox.cpp.o
    [ 40%] Building CXX object src/CMakeFiles/llama.dir/models/granite-hybrid.cpp.o
    [ 40%] Building CXX object src/CMakeFiles/llama.dir/models/granite-moe.cpp.o
    [ 40%] Building CXX object src/CMakeFiles/llama.dir/models/granite.cpp.o
    [ 40%] Building CXX object src/CMakeFiles/llama.dir/models/grok.cpp.o
    [ 40%] Building CXX object src/CMakeFiles/llama.dir/models/grovemoe.cpp.o
    [ 40%] Building CXX object src/CMakeFiles/llama.dir/models/hunyuan-dense.cpp.o
    [ 41%] Building CXX object src/CMakeFiles/llama.dir/models/hunyuan-moe.cpp.o
    [ 41%] Building CXX object src/CMakeFiles/llama.dir/models/hunyuan-vl.cpp.o
    [ 41%] Building CXX object src/CMakeFiles/llama.dir/models/internlm2.cpp.o
    [ 41%] Building CXX object src/CMakeFiles/llama.dir/models/jais.cpp.o
    [ 41%] Building CXX object src/CMakeFiles/llama.dir/models/jais2.cpp.o
    [ 41%] Building CXX object src/CMakeFiles/llama.dir/models/jamba.cpp.o
    [ 42%] Building CXX object src/CMakeFiles/llama.dir/models/jina-bert-v2.cpp.o
    [ 42%] Building CXX object src/CMakeFiles/llama.dir/models/jina-bert-v3.cpp.o
    [ 42%] Building CXX object src/CMakeFiles/llama.dir/models/kimi-linear.cpp.o
    [ 42%] Building CXX object src/CMakeFiles/llama.dir/models/lfm2.cpp.o
    [ 42%] Building CXX object src/CMakeFiles/llama.dir/models/lfm2moe.cpp.o
    [ 42%] Building CXX object src/CMakeFiles/llama.dir/models/llada-moe.cpp.o
    [ 42%] Building CXX object src/CMakeFiles/llama.dir/models/llada.cpp.o
    [ 43%] Building CXX object src/CMakeFiles/llama.dir/models/llama-embed.cpp.o
    [ 43%] Building CXX object src/CMakeFiles/llama.dir/models/llama.cpp.o
    [ 43%] Building CXX object src/CMakeFiles/llama.dir/models/llama4.cpp.o
    [ 43%] Building CXX object src/CMakeFiles/llama.dir/models/maincoder.cpp.o
    [ 43%] Building CXX object src/CMakeFiles/llama.dir/models/mamba-base.cpp.o
    [ 43%] Building CXX object src/CMakeFiles/llama.dir/models/mamba.cpp.o
    [ 44%] Building CXX object src/CMakeFiles/llama.dir/models/mamba2.cpp.o
    [ 44%] Building CXX object src/CMakeFiles/llama.dir/models/mimo2.cpp.o
    [ 44%] Building CXX object src/CMakeFiles/llama.dir/models/minicpm.cpp.o
    [ 44%] Building CXX object src/CMakeFiles/llama.dir/models/minicpm3.cpp.o
    [ 44%] Building CXX object src/CMakeFiles/llama.dir/models/minimax-m2.cpp.o
    [ 44%] Building CXX object src/CMakeFiles/llama.dir/models/mistral3.cpp.o
    [ 44%] Building CXX object src/CMakeFiles/llama.dir/models/mistral4.cpp.o
    [ 45%] Building CXX object src/CMakeFiles/llama.dir/models/modern-bert.cpp.o
    [ 45%] Building CXX object src/CMakeFiles/llama.dir/models/mpt.cpp.o
    [ 45%] Building CXX object src/CMakeFiles/llama.dir/models/nemotron-h-moe.cpp.o
    [ 45%] Building CXX object src/CMakeFiles/llama.dir/models/nemotron-h.cpp.o
    [ 45%] Building CXX object src/CMakeFiles/llama.dir/models/nemotron.cpp.o
    [ 45%] Building CXX object src/CMakeFiles/llama.dir/models/neo-bert.cpp.o
    [ 46%] Building CXX object src/CMakeFiles/llama.dir/models/nomic-bert-moe.cpp.o
    [ 46%] Building CXX object src/CMakeFiles/llama.dir/models/nomic-bert.cpp.o
    [ 46%] Building CXX object src/CMakeFiles/llama.dir/models/olmo.cpp.o
    [ 46%] Building CXX object src/CMakeFiles/llama.dir/models/olmo2.cpp.o
    [ 46%] Building CXX object src/CMakeFiles/llama.dir/models/olmoe.cpp.o
    [ 46%] Building CXX object src/CMakeFiles/llama.dir/models/openai-moe.cpp.o
    [ 46%] Building CXX object src/CMakeFiles/llama.dir/models/openelm.cpp.o
    [ 47%] Building CXX object src/CMakeFiles/llama.dir/models/orion.cpp.o
    [ 47%] Building CXX object src/CMakeFiles/llama.dir/models/paddleocr.cpp.o
    [ 47%] Building CXX object src/CMakeFiles/llama.dir/models/pangu-embed.cpp.o
    [ 47%] Building CXX object src/CMakeFiles/llama.dir/models/phi2.cpp.o
    [ 47%] Building CXX object src/CMakeFiles/llama.dir/models/phi3.cpp.o
    [ 47%] Building CXX object src/CMakeFiles/llama.dir/models/phimoe.cpp.o
    [ 47%] Building CXX object src/CMakeFiles/llama.dir/models/plamo.cpp.o
    [ 48%] Building CXX object src/CMakeFiles/llama.dir/models/plamo2.cpp.o
    [ 48%] Building CXX object src/CMakeFiles/llama.dir/models/plamo3.cpp.o
    [ 48%] Building CXX object src/CMakeFiles/llama.dir/models/plm.cpp.o
    [ 48%] Building CXX object src/CMakeFiles/llama.dir/models/qwen.cpp.o
    [ 48%] Building CXX object src/CMakeFiles/llama.dir/models/qwen2.cpp.o
    [ 48%] Building CXX object src/CMakeFiles/llama.dir/models/qwen2moe.cpp.o
    [ 49%] Building CXX object src/CMakeFiles/llama.dir/models/qwen2vl.cpp.o
    [ 49%] Building CXX object src/CMakeFiles/llama.dir/models/qwen3.cpp.o
    [ 49%] Building CXX object src/CMakeFiles/llama.dir/models/qwen35.cpp.o
    [ 49%] Building CXX object src/CMakeFiles/llama.dir/models/qwen35moe.cpp.o
    [ 49%] Building CXX object src/CMakeFiles/llama.dir/models/qwen3moe.cpp.o
    [ 49%] Building CXX object src/CMakeFiles/llama.dir/models/qwen3next.cpp.o
    [ 49%] Building CXX object src/CMakeFiles/llama.dir/models/qwen3vl.cpp.o
    [ 50%] Building CXX object src/CMakeFiles/llama.dir/models/qwen3vlmoe.cpp.o
    [ 50%] Building CXX object src/CMakeFiles/llama.dir/models/refact.cpp.o
    [ 50%] Building CXX object src/CMakeFiles/llama.dir/models/rnd1.cpp.o
    [ 50%] Building CXX object src/CMakeFiles/llama.dir/models/rwkv6-base.cpp.o
    [ 50%] Building CXX object src/CMakeFiles/llama.dir/models/rwkv6.cpp.o
    [ 50%] Building CXX object src/CMakeFiles/llama.dir/models/rwkv6qwen2.cpp.o
    [ 51%] Building CXX object src/CMakeFiles/llama.dir/models/rwkv7-base.cpp.o
    [ 51%] Building CXX object src/CMakeFiles/llama.dir/models/rwkv7.cpp.o
    [ 51%] Building CXX object src/CMakeFiles/llama.dir/models/seed-oss.cpp.o
    [ 51%] Building CXX object src/CMakeFiles/llama.dir/models/smallthinker.cpp.o
    [ 51%] Building CXX object src/CMakeFiles/llama.dir/models/smollm3.cpp.o
    [ 51%] Building CXX object src/CMakeFiles/llama.dir/models/stablelm.cpp.o
    [ 51%] Building CXX object src/CMakeFiles/llama.dir/models/starcoder.cpp.o
    [ 52%] Building CXX object src/CMakeFiles/llama.dir/models/starcoder2.cpp.o
    [ 52%] Building CXX object src/CMakeFiles/llama.dir/models/step35.cpp.o
    [ 52%] Building CXX object src/CMakeFiles/llama.dir/models/t5.cpp.o
    [ 52%] Building CXX object src/CMakeFiles/llama.dir/models/wavtokenizer-dec.cpp.o
    [ 52%] Building CXX object src/CMakeFiles/llama.dir/models/t5encoder.cpp.o
    [ 52%] Building CXX object src/CMakeFiles/llama.dir/models/xverse.cpp.o
    [ 53%] Linking CXX shared library ../bin/libllama.so
    [ 53%] Built target llama
    [ 54%] Building CXX object examples/simple/CMakeFiles/llama-simple.dir/simple.cpp.o
    [ 54%] Building CXX object tools/mtmd/CMakeFiles/mtmd.dir/mtmd-audio.cpp.o
    [ 54%] Building CXX object tools/mtmd/CMakeFiles/mtmd.dir/mtmd-image.cpp.o
    [ 55%] Building CXX object tools/mtmd/CMakeFiles/mtmd.dir/clip.cpp.o
    [ 55%] Building CXX object tools/mtmd/CMakeFiles/mtmd.dir/mtmd-helper.cpp.o
    [ 55%] Building CXX object examples/simple-chat/CMakeFiles/llama-simple-chat.dir/simple-chat.cpp.o
    [ 55%] Building CXX object tools/mtmd/CMakeFiles/mtmd.dir/models/gemma4a.cpp.o
    [ 55%] Building CXX object tools/mtmd/CMakeFiles/mtmd.dir/mtmd.cpp.o
    [ 55%] Building CXX object tools/mtmd/CMakeFiles/mtmd.dir/models/dotsocr.cpp.o
    [ 56%] Building CXX object tools/mtmd/CMakeFiles/mtmd.dir/models/glm4v.cpp.o
    [ 56%] Building CXX object tools/mtmd/CMakeFiles/mtmd.dir/models/gemma4v.cpp.o
    [ 56%] Building CXX object tools/mtmd/CMakeFiles/mtmd.dir/models/internvl.cpp.o
    [ 56%] Building CXX object tools/mtmd/CMakeFiles/mtmd.dir/models/cogvlm.cpp.o
    [ 56%] Building C object tests/CMakeFiles/test-c.dir/test-c.c.o
    [ 56%] Building CXX object tools/mtmd/CMakeFiles/mtmd.dir/models/hunyuanvl.cpp.o
    [ 56%] Building CXX object tools/mtmd/CMakeFiles/mtmd.dir/models/granite-speech.cpp.o
    [ 56%] Building CXX object tools/mtmd/CMakeFiles/mtmd.dir/models/kimivl.cpp.o
    [ 56%] Building CXX object tools/mtmd/CMakeFiles/mtmd.dir/models/conformer.cpp.o
    [ 56%] Building CXX object tools/mtmd/CMakeFiles/mtmd.dir/models/kimik25.cpp.o
    [ 56%] Building CXX object common/CMakeFiles/llama-common.dir/arg.cpp.o
    [ 57%] Linking C executable ../bin/test-c
    [ 57%] Built target test-c
    [ 57%] Building CXX object common/CMakeFiles/llama-common.dir/chat-auto-parser-generator.cpp.o
    [ 57%] Linking CXX executable ../../bin/llama-simple
    [ 57%] Built target llama-simple
    [ 58%] Building CXX object tools/mtmd/CMakeFiles/mtmd.dir/models/nemotron-v2-vl.cpp.o
    [ 58%] Linking CXX executable ../../bin/llama-simple-chat
    [ 58%] Built target llama-simple-chat
    [ 58%] Building CXX object common/CMakeFiles/llama-common.dir/chat-auto-parser-helpers.cpp.o
    [ 58%] Building CXX object tools/mtmd/CMakeFiles/mtmd.dir/models/llama4.cpp.o
    [ 59%] Building CXX object common/CMakeFiles/llama-common.dir/chat-diff-analyzer.cpp.o
    [ 59%] Building CXX object tools/mtmd/CMakeFiles/mtmd.dir/models/llava.cpp.o
    [ 59%] Building CXX object common/CMakeFiles/llama-common.dir/chat-peg-parser.cpp.o
    [ 59%] Building CXX object tools/mtmd/CMakeFiles/mtmd.dir/models/minicpmv.cpp.o
    [ 59%] Building CXX object common/CMakeFiles/llama-common.dir/chat.cpp.o
    [ 59%] Building CXX object common/CMakeFiles/llama-common.dir/common.cpp.o
    [ 59%] Building CXX object tools/mtmd/CMakeFiles/mtmd.dir/models/paddleocr.cpp.o
    [ 59%] Building CXX object common/CMakeFiles/llama-common.dir/console.cpp.o
    [ 59%] Building CXX object tools/mtmd/CMakeFiles/mtmd.dir/models/pixtral.cpp.o
    [ 59%] Building CXX object common/CMakeFiles/llama-common.dir/debug.cpp.o
    [ 59%] Building CXX object common/CMakeFiles/llama-common.dir/download.cpp.o
    [ 60%] Building CXX object common/CMakeFiles/llama-common.dir/fit.cpp.o
    [ 60%] Building CXX object common/CMakeFiles/llama-common.dir/hf-cache.cpp.o
    [ 60%] Building CXX object common/CMakeFiles/llama-common.dir/json-partial.cpp.o
    [ 60%] Building CXX object tools/mtmd/CMakeFiles/mtmd.dir/models/qwen2vl.cpp.o
    [ 60%] Building CXX object common/CMakeFiles/llama-common.dir/json-schema-to-grammar.cpp.o
    [ 61%] Building CXX object tools/mtmd/CMakeFiles/mtmd.dir/models/qwen3vl.cpp.o
    [ 61%] Building CXX object common/CMakeFiles/llama-common.dir/llguidance.cpp.o
    [ 61%] Building CXX object tools/mtmd/CMakeFiles/mtmd.dir/models/mimovl.cpp.o
    [ 61%] Building CXX object common/CMakeFiles/llama-common.dir/log.cpp.o
    [ 62%] Building CXX object common/CMakeFiles/llama-common.dir/ngram-cache.cpp.o
    [ 62%] Building CXX object tools/mtmd/CMakeFiles/mtmd.dir/models/qwen3a.cpp.o
    [ 62%] Building CXX object common/CMakeFiles/llama-common.dir/ngram-map.cpp.o
    [ 62%] Building CXX object common/CMakeFiles/llama-common.dir/ngram-mod.cpp.o
    [ 62%] Building CXX object tools/mtmd/CMakeFiles/mtmd.dir/models/step3vl.cpp.o
    [ 62%] Building CXX object tools/mtmd/CMakeFiles/mtmd.dir/models/siglip.cpp.o
    [ 62%] Building CXX object common/CMakeFiles/llama-common.dir/peg-parser.cpp.o
    [ 62%] Building CXX object common/CMakeFiles/llama-common.dir/preset.cpp.o
    [ 62%] Building CXX object tools/mtmd/CMakeFiles/mtmd.dir/models/whisper-enc.cpp.o
    [ 63%] Building CXX object tools/mtmd/CMakeFiles/mtmd.dir/models/deepseekocr.cpp.o
    [ 63%] Building CXX object tools/mtmd/CMakeFiles/mtmd.dir/models/mobilenetv5.cpp.o
    [ 63%] Building CXX object common/CMakeFiles/llama-common.dir/regex-partial.cpp.o
    [ 63%] Building CXX object tools/mtmd/CMakeFiles/mtmd.dir/models/youtuvl.cpp.o
    [ 63%] Building CXX object tools/mtmd/CMakeFiles/mtmd.dir/models/yasa2.cpp.o
    [ 63%] Building CXX object common/CMakeFiles/llama-common.dir/reasoning-budget.cpp.o
    [ 64%] Building CXX object common/CMakeFiles/llama-common.dir/sampling.cpp.o
    [ 64%] Building CXX object common/CMakeFiles/llama-common.dir/speculative.cpp.o
    [ 64%] Building CXX object common/CMakeFiles/llama-common.dir/unicode.cpp.o
    [ 64%] Building CXX object common/CMakeFiles/llama-common.dir/jinja/lexer.cpp.o
    [ 64%] Building CXX object common/CMakeFiles/llama-common.dir/jinja/parser.cpp.o
    [ 64%] Building CXX object common/CMakeFiles/llama-common.dir/jinja/runtime.cpp.o
    [ 64%] Building CXX object common/CMakeFiles/llama-common.dir/jinja/value.cpp.o
    [ 65%] Building CXX object common/CMakeFiles/llama-common.dir/jinja/string.cpp.o
    [ 65%] Building CXX object common/CMakeFiles/llama-common.dir/jinja/caps.cpp.o
    [ 65%] Building CXX object common/CMakeFiles/llama-common.dir/__/license.cpp.o
    [ 65%] Linking CXX shared library ../../bin/libmtmd.so
    [ 65%] Built target mtmd
    [ 65%] Linking CXX shared library ../bin/libllama-common.so
    [ 65%] Built target llama-common
    [ 66%] Building CXX object tests/CMakeFiles/test-tokenizer-0.dir/test-tokenizer-0.cpp.o
    [ 66%] Building CXX object tests/CMakeFiles/test-grammar-parser.dir/test-grammar-parser.cpp.o
    [ 66%] Building CXX object tests/CMakeFiles/test-gbnf-validator.dir/test-gbnf-validator.cpp.o
    [ 66%] Building CXX object tools/server/CMakeFiles/server-context.dir/server-chat.cpp.o
    [ 66%] Building CXX object tests/CMakeFiles/test-llama-grammar.dir/test-llama-grammar.cpp.o
    [ 67%] Building CXX object tests/CMakeFiles/test-json-schema-to-grammar.dir/test-json-schema-to-grammar.cpp.o
    [ 68%] Building CXX object tests/CMakeFiles/test-quantize-stats.dir/test-quantize-stats.cpp.o
    [ 68%] Building CXX object tests/CMakeFiles/test-reasoning-budget.dir/test-reasoning-budget.cpp.o
    [ 69%] Building CXX object tests/CMakeFiles/test-chat-peg-parser.dir/test-chat-peg-parser.cpp.o
    [ 70%] Building CXX object tests/CMakeFiles/test-jinja.dir/test-jinja.cpp.o
    [ 70%] Building CXX object tests/CMakeFiles/test-grammar-integration.dir/test-grammar-integration.cpp.o
    [ 70%] Building CXX object tests/CMakeFiles/test-log.dir/test-log.cpp.o
    [ 70%] Building CXX object tests/CMakeFiles/test-tokenizer-1-bpe.dir/test-tokenizer-1-bpe.cpp.o
    [ 70%] Building CXX object tests/CMakeFiles/test-json-partial.dir/test-json-partial.cpp.o
    [ 70%] Building CXX object tests/CMakeFiles/test-llama-archs.dir/test-llama-archs.cpp.o
    [ 70%] Building CXX object tests/CMakeFiles/test-sampling.dir/test-sampling.cpp.o
    [ 70%] Building CXX object tests/CMakeFiles/test-chat-auto-parser.dir/test-chat-auto-parser.cpp.o
    [ 70%] Building CXX object tests/CMakeFiles/test-tokenizer-1-spm.dir/test-tokenizer-1-spm.cpp.o
    [ 70%] Building CXX object tests/CMakeFiles/test-peg-parser.dir/test-peg-parser.cpp.o
    [ 70%] Building CXX object tests/CMakeFiles/test-chat-template.dir/test-chat-template.cpp.o
    [ 70%] Building CXX object tests/CMakeFiles/test-log.dir/get-model.cpp.o
    [ 70%] Linking CXX executable ../bin/test-log
    [ 70%] Built target test-log
    [ 70%] Building CXX object tests/CMakeFiles/test-json-partial.dir/get-model.cpp.o
    [ 70%] Building CXX object tests/CMakeFiles/test-reasoning-budget.dir/get-model.cpp.o
    [ 70%] Building CXX object tests/CMakeFiles/test-llama-archs.dir/get-model.cpp.o
    [ 70%] Linking CXX executable ../bin/test-reasoning-budget
    [ 70%] Building CXX object tests/CMakeFiles/test-chat-peg-parser.dir/peg-parser/simple-tokenize.cpp.o
    [ 70%] Linking CXX executable ../bin/test-gbnf-validator
    [ 70%] Built target test-reasoning-budget
    [ 70%] Building CXX object tests/CMakeFiles/test-grammar-integration.dir/get-model.cpp.o
    [ 70%] Linking CXX executable ../bin/test-tokenizer-1-bpe
    [ 70%] Built target test-gbnf-validator
    [ 70%] Building CXX object tests/CMakeFiles/test-json-schema-to-grammar.dir/get-model.cpp.o
    [ 70%] Building CXX object tests/CMakeFiles/test-chat-template.dir/get-model.cpp.o
    [ 70%] Building CXX object tools/server/CMakeFiles/server-context.dir/server-task.cpp.o
    [ 70%] Building CXX object tests/CMakeFiles/test-sampling.dir/get-model.cpp.o
    [ 71%] Building CXX object tests/CMakeFiles/test-llama-grammar.dir/get-model.cpp.o
    [ 71%] Linking CXX executable ../bin/test-tokenizer-1-spm
    [ 71%] Building CXX object tests/CMakeFiles/test-chat-auto-parser.dir/get-model.cpp.o
    [ 71%] Building CXX object tests/CMakeFiles/test-peg-parser.dir/peg-parser/simple-tokenize.cpp.o
    [ 71%] Built target test-tokenizer-1-bpe
    [ 71%] Building CXX object tests/CMakeFiles/test-jinja.dir/get-model.cpp.o
    [ 72%] Building CXX object tools/server/CMakeFiles/server-context.dir/server-queue.cpp.o
    [ 72%] Building CXX object tests/CMakeFiles/test-grammar-parser.dir/get-model.cpp.o
    [ 72%] Building CXX object tests/CMakeFiles/test-chat-peg-parser.dir/get-model.cpp.o
    [ 72%] Linking CXX executable ../bin/test-grammar-parser
    [ 72%] Built target test-tokenizer-1-spm
    [ 72%] Building CXX object tools/server/CMakeFiles/server-context.dir/server-common.cpp.o
    [ 72%] Building CXX object tests/CMakeFiles/test-regex-partial.dir/test-regex-partial.cpp.o
    [ 72%] Built target test-grammar-parser
    [ 72%] Building CXX object tools/server/CMakeFiles/server-context.dir/server-context.cpp.o
    [ 72%] Building CXX object tests/CMakeFiles/test-regex-partial.dir/get-model.cpp.o
    [ 72%] Linking CXX executable ../bin/test-llama-grammar
    [ 72%] Building CXX object tests/CMakeFiles/test-thread-safety.dir/test-thread-safety.cpp.o
    [ 72%] Linking CXX executable ../bin/test-tokenizer-0
    [ 72%] Linking CXX executable ../bin/test-sampling
    [ 72%] Built target test-llama-grammar
    [ 72%] Building CXX object tests/CMakeFiles/test-peg-parser.dir/peg-parser/test-basic.cpp.o
    [ 72%] Built target test-tokenizer-0
    [ 72%] Building CXX object tools/server/CMakeFiles/server-context.dir/server-tools.cpp.o
    [ 72%] Built target test-sampling
    [ 72%] Building CXX object tests/CMakeFiles/test-thread-safety.dir/get-model.cpp.o
    [ 72%] Building CXX object tests/CMakeFiles/test-peg-parser.dir/peg-parser/test-gbnf-generation.cpp.o
    [ 72%] Linking CXX executable ../bin/test-llama-archs
    [ 72%] Built target test-llama-archs
    [ 72%] Building CXX object tests/CMakeFiles/test-arg-parser.dir/test-arg-parser.cpp.o
    [ 72%] Linking CXX executable ../bin/test-json-partial
    [ 72%] Linking CXX executable ../bin/test-regex-partial
    [ 72%] Built target test-json-partial
    [ 72%] Building CXX object tests/CMakeFiles/test-peg-parser.dir/peg-parser/test-json-parser.cpp.o
    [ 72%] Linking CXX executable ../bin/test-thread-safety
    [ 72%] Built target test-regex-partial
    [ 72%] Building CXX object tests/CMakeFiles/test-opt.dir/test-opt.cpp.o
    [ 72%] Built target test-thread-safety
    [ 72%] Building CXX object tests/CMakeFiles/test-arg-parser.dir/get-model.cpp.o
    [ 73%] Building CXX object tests/CMakeFiles/test-peg-parser.dir/peg-parser/test-json-serialization.cpp.o
    [ 73%] Linking CXX executable ../bin/test-arg-parser
    [ 73%] Built target test-arg-parser
    [ 73%] Building CXX object tests/CMakeFiles/test-opt.dir/get-model.cpp.o
    [ 73%] Building CXX object tests/CMakeFiles/test-peg-parser.dir/peg-parser/test-python-dict-parser.cpp.o
    [ 74%] Linking CXX executable ../bin/test-opt
    [ 74%] Built target test-opt
    [ 74%] Building CXX object tests/CMakeFiles/test-peg-parser.dir/peg-parser/test-unicode.cpp.o
    [ 74%] Linking CXX executable ../bin/test-grammar-integration
    [ 74%] Linking CXX executable ../bin/test-quantize-stats
    [ 74%] Built target test-grammar-integration
    [ 74%] Building CXX object tests/CMakeFiles/test-peg-parser.dir/get-model.cpp.o
    [ 74%] Built target test-quantize-stats
    [ 74%] Building CXX object tests/CMakeFiles/test-gguf.dir/test-gguf.cpp.o
    [ 74%] Building CXX object tests/CMakeFiles/test-gguf.dir/get-model.cpp.o
    [ 74%] Building CXX object tests/CMakeFiles/test-backend-ops.dir/test-backend-ops.cpp.o
    [ 74%] Building CXX object tests/CMakeFiles/test-model-load-cancel.dir/test-model-load-cancel.cpp.o
    [ 75%] Building CXX object tests/CMakeFiles/test-model-load-cancel.dir/get-model.cpp.o
    [ 75%] Linking CXX executable ../bin/test-model-load-cancel
    [ 75%] Built target test-model-load-cancel
    [ 75%] Building CXX object tests/CMakeFiles/test-backend-ops.dir/get-model.cpp.o
    [ 76%] Building CXX object tests/CMakeFiles/test-autorelease.dir/test-autorelease.cpp.o
    [ 76%] Building CXX object tests/CMakeFiles/test-autorelease.dir/get-model.cpp.o
    [ 76%] Linking CXX executable ../bin/test-autorelease
    [ 76%] Building CXX object tests/CMakeFiles/test-backend-sampler.dir/test-backend-sampler.cpp.o
    [ 76%] Built target test-autorelease
    [ 76%] Building CXX object tests/CMakeFiles/test-state-restore-fragmented.dir/test-state-restore-fragmented.cpp.o
    [ 76%] Building CXX object tests/CMakeFiles/test-recurrent-state-rollback.dir/test-recurrent-state-rollback.cpp.o
    [ 76%] Linking CXX executable ../bin/test-gguf
    [ 76%] Built target test-gguf
    [ 77%] Building CXX object tests/CMakeFiles/test-backend-sampler.dir/get-model.cpp.o
    [ 77%] Building CXX object tests/CMakeFiles/test-save-load-state.dir/test-save-load-state.cpp.o
    [ 77%] Building CXX object tests/CMakeFiles/test-state-restore-fragmented.dir/get-model.cpp.o
    [ 78%] Linking CXX executable ../bin/test-chat-template
    [ 78%] Linking CXX executable ../bin/test-state-restore-fragmented
    [ 78%] Linking CXX executable ../bin/test-json-schema-to-grammar
    [ 78%] Built target test-chat-template
    [ 78%] Built target test-state-restore-fragmented
    [ 78%] Building CXX object tests/CMakeFiles/test-save-load-state.dir/get-model.cpp.o
    [ 79%] Building CXX object tests/CMakeFiles/test-recurrent-state-rollback.dir/get-model.cpp.o
    [ 79%] Built target test-json-schema-to-grammar
    [ 79%] Building CXX object tests/CMakeFiles/test-quantize-perf.dir/test-quantize-perf.cpp.o
    [ 79%] Building CXX object tests/CMakeFiles/test-barrier.dir/test-barrier.cpp.o
    [ 79%] Building CXX object tests/CMakeFiles/test-quantize-fns.dir/test-quantize-fns.cpp.o
    [ 79%] Linking CXX executable ../bin/test-recurrent-state-rollback
    [ 79%] Building CXX object tests/CMakeFiles/test-quantize-perf.dir/get-model.cpp.o
    [ 79%] Building CXX object tests/CMakeFiles/test-rope.dir/test-rope.cpp.o
    [ 79%] Built target test-recurrent-state-rollback
    [ 79%] Building CXX object tests/CMakeFiles/test-barrier.dir/get-model.cpp.o
    [ 79%] Building CXX object tests/CMakeFiles/test-rope.dir/get-model.cpp.o
    [ 79%] Building CXX object tests/CMakeFiles/test-quantize-fns.dir/get-model.cpp.o
    [ 79%] Building C object tests/CMakeFiles/test-mtmd-c-api.dir/test-mtmd-c-api.c.o
    [ 79%] Building CXX object tests/CMakeFiles/test-mtmd-c-api.dir/get-model.cpp.o
    [ 79%] Linking CXX executable ../bin/test-mtmd-c-api
    [ 79%] Linking CXX executable ../bin/test-barrier
    [ 79%] Linking CXX executable ../bin/test-quantize-fns
    [ 80%] Linking CXX executable ../bin/test-save-load-state
    [ 81%] Linking CXX executable ../bin/test-rope
    [ 81%] Built target test-mtmd-c-api
    [ 82%] Building CXX object tests/CMakeFiles/gguf-model-data.dir/gguf-model-data.cpp.o
    [ 82%] Built target test-barrier
    [ 82%] Built target test-quantize-fns
    [ 82%] Building CXX object tests/CMakeFiles/test-alloc.dir/test-alloc.cpp.o
    [ 82%] Building CXX object examples/batched/CMakeFiles/llama-batched.dir/batched.cpp.o
    [ 82%] Built target test-rope
    [ 82%] Building CXX object tests/CMakeFiles/test-alloc.dir/get-model.cpp.o
    [ 82%] Built target test-save-load-state
    [ 82%] Building CXX object examples/debug/CMakeFiles/llama-debug.dir/debug.cpp.o
    [ 82%] Building CXX object examples/embedding/CMakeFiles/llama-embedding.dir/embedding.cpp.o
    [ 82%] Linking CXX executable ../bin/test-backend-sampler
    [ 82%] Built target test-backend-sampler
    [ 82%] Building CXX object examples/eval-callback/CMakeFiles/llama-eval-callback.dir/eval-callback.cpp.o
    [ 82%] Building CXX object examples/idle/CMakeFiles/llama-idle.dir/idle.cpp.o
    [ 82%] Building CXX object examples/lookahead/CMakeFiles/llama-lookahead.dir/lookahead.cpp.o
    [ 83%] Building CXX object examples/lookup/CMakeFiles/llama-lookup.dir/lookup.cpp.o
    [ 83%] Linking CXX executable ../bin/test-quantize-perf
    [ 83%] Linking CXX executable ../bin/test-alloc
    [ 83%] Built target test-quantize-perf
    [ 83%] Building CXX object examples/lookup/CMakeFiles/llama-lookup-create.dir/lookup-create.cpp.o
    [ 83%] Built target test-alloc
    [ 83%] Building CXX object examples/lookup/CMakeFiles/llama-lookup-merge.dir/lookup-merge.cpp.o
    [ 83%] Linking CXX executable ../../bin/llama-batched
    [ 83%] Built target llama-batched
    [ 83%] Building CXX object examples/lookup/CMakeFiles/llama-lookup-stats.dir/lookup-stats.cpp.o
    [ 83%] Building CXX object examples/parallel/CMakeFiles/llama-parallel.dir/parallel.cpp.o
    [ 83%] Linking CXX executable ../../bin/llama-eval-callback
    [ 83%] Linking CXX executable ../bin/test-peg-parser
    [ 83%] Built target llama-eval-callback
    [ 83%] Linking CXX executable ../../bin/llama-embedding
    [ 83%] Building CXX object examples/passkey/CMakeFiles/llama-passkey.dir/passkey.cpp.o
    [ 83%] Linking CXX executable ../../bin/llama-idle
    [ 83%] Built target test-peg-parser
    [ 83%] Building CXX object examples/retrieval/CMakeFiles/llama-retrieval.dir/retrieval.cpp.o
    [ 83%] Linking CXX executable ../../bin/llama-lookup-merge
    [ 83%] Built target llama-embedding
    [ 83%] Built target llama-idle
    [ 83%] Building CXX object examples/speculative/CMakeFiles/llama-speculative.dir/speculative.cpp.o
    [ 84%] Building CXX object examples/speculative-simple/CMakeFiles/llama-speculative-simple.dir/speculative-simple.cpp.o
    [ 84%] Built target llama-lookup-merge
    [ 84%] Building CXX object examples/gen-docs/CMakeFiles/llama-gen-docs.dir/gen-docs.cpp.o
    [ 84%] Linking CXX executable ../../bin/llama-lookup
    [ 84%] Linking CXX executable ../../bin/llama-lookahead
    [ 84%] Built target llama-lookup
    [ 84%] Building CXX object examples/training/CMakeFiles/llama-finetune.dir/finetune.cpp.o
    [ 84%] Linking CXX executable ../../bin/llama-lookup-create
    [ 84%] Built target llama-lookahead
    [ 84%] Building CXX object examples/diffusion/CMakeFiles/llama-diffusion.dir/diffusion.cpp.o
    [ 84%] Built target llama-lookup-create
    [ 84%] Building CXX object examples/convert-llama2c-to-ggml/CMakeFiles/llama-convert-llama2c-to-ggml.dir/convert-llama2c-to-ggml.cpp.o
    [ 85%] Linking CXX executable ../../bin/llama-lookup-stats
    [ 85%] Built target llama-lookup-stats
    [ 85%] Building CXX object pocs/vdot/CMakeFiles/llama-vdot.dir/vdot.cpp.o
    [ 85%] Linking CXX executable ../../bin/llama-parallel
    [ 85%] Linking CXX executable ../../bin/llama-passkey
    [ 85%] Built target llama-parallel
    [ 85%] Built target llama-passkey
    [ 85%] Building CXX object pocs/vdot/CMakeFiles/llama-q8dot.dir/q8dot.cpp.o
    [ 86%] Building CXX object tools/batched-bench/CMakeFiles/llama-batched-bench-impl.dir/batched-bench.cpp.o
    [ 86%] Linking CXX executable ../../bin/llama-gen-docs
    [ 86%] Built target llama-gen-docs
    [ 86%] Building CXX object tools/gguf-split/CMakeFiles/llama-gguf-split.dir/gguf-split.cpp.o
    [ 86%] Linking CXX executable ../../bin/llama-finetune
    [ 87%] Linking CXX static library libllama-diffusion.a
    [ 87%] Linking CXX executable ../../bin/llama-vdot
    [ 87%] Built target llama-diffusion
    [ 88%] Building CXX object tools/imatrix/CMakeFiles/llama-imatrix.dir/imatrix.cpp.o
    [ 89%] Linking CXX executable ../../bin/llama-retrieval
    [ 89%] Built target llama-finetune
    [ 89%] Building CXX object tools/llama-bench/CMakeFiles/llama-bench-impl.dir/llama-bench.cpp.o
    [ 89%] Built target llama-vdot
    [ 89%] Building CXX object tools/completion/CMakeFiles/llama-completion-impl.dir/completion.cpp.o
    [ 89%] Linking CXX executable ../../bin/llama-q8dot
    [ 89%] Built target llama-retrieval
    [ 90%] Building CXX object tools/perplexity/CMakeFiles/llama-perplexity-impl.dir/perplexity.cpp.o
    [ 90%] Building CXX object tools/quantize/CMakeFiles/llama-quantize-impl.dir/quantize.cpp.o
    [ 90%] Built target llama-q8dot
    [ 90%] Building CXX object tools/tokenize/CMakeFiles/llama-tokenize.dir/tokenize.cpp.o
    [ 90%] Linking CXX executable ../../bin/llama-speculative-simple
    [ 90%] Built target llama-speculative-simple
    [ 90%] Building CXX object tools/parser/CMakeFiles/llama-debug-template-parser.dir/debug-template-parser.cpp.o
    [ 90%] Linking CXX executable ../../bin/llama-convert-llama2c-to-ggml
    [ 90%] Built target llama-convert-llama2c-to-ggml
    [ 90%] Linking CXX shared library ../../bin/libllama-batched-bench-impl.so
    [ 90%] Building CXX object tools/parser/CMakeFiles/llama-template-analysis.dir/template-analysis.cpp.o
    [ 90%] Linking CXX executable ../../bin/llama-gguf-split
    [ 90%] Built target llama-batched-bench-impl
    [ 90%] Building CXX object tools/tts/CMakeFiles/llama-tts.dir/tts.cpp.o
    [ 90%] Built target llama-gguf-split
    [ 90%] Linking CXX executable ../../bin/llama-tokenize
    [ 90%] Building CXX object tools/mtmd/CMakeFiles/llama-mtmd-cli.dir/mtmd-cli.cpp.o
    [ 90%] Built target llama-tokenize
    [ 90%] Building CXX object tools/mtmd/CMakeFiles/llama-mtmd-debug.dir/debug/mtmd-debug.cpp.o
    [ 90%] Linking CXX executable ../../bin/llama-debug
    [ 90%] Built target llama-debug
    [ 90%] Building CXX object tools/cvector-generator/CMakeFiles/llama-cvector-generator.dir/cvector-generator.cpp.o
    [ 90%] Linking CXX executable ../../bin/llama-speculative
    [ 90%] Built target llama-speculative
    [ 91%] Building CXX object tools/export-lora/CMakeFiles/llama-export-lora.dir/export-lora.cpp.o
    [ 92%] Linking CXX executable ../../bin/llama-mtmd-debug
    [ 92%] Built target llama-mtmd-debug
    [ 93%] Linking CXX shared library ../../bin/libllama-quantize-impl.so
    [ 94%] Building CXX object tools/fit-params/CMakeFiles/llama-fit-params-impl.dir/fit-params.cpp.o
    [ 94%] Built target llama-quantize-impl
    [ 94%] Building CXX object tools/results/CMakeFiles/llama-results.dir/results.cpp.o
    [ 94%] Linking CXX static library libgguf-model-data.a
    [ 94%] Built target gguf-model-data
    [ 94%] Building CXX object examples/diffusion/CMakeFiles/llama-diffusion-cli.dir/diffusion-cli.cpp.o
    [ 94%] Linking CXX executable ../../bin/llama-export-lora
    [ 95%] Linking CXX executable ../../bin/llama-cvector-generator
    [ 95%] Building CXX object tools/batched-bench/CMakeFiles/llama-batched-bench.dir/main.cpp.o
    [ 95%] Linking CXX executable ../../bin/llama-mtmd-cli
    [ 95%] Linking CXX executable ../../bin/llama-batched-bench
    [ 95%] Built target llama-export-lora
    [ 95%] Building CXX object tools/quantize/CMakeFiles/llama-quantize.dir/main.cpp.o
    [ 95%] Built target llama-cvector-generator
    [ 95%] Building CXX object tests/CMakeFiles/test-gguf-model-data.dir/test-gguf-model-data.cpp.o
    [ 95%] Linking CXX executable ../../bin/llama-quantize
    [ 95%] Built target llama-mtmd-cli
    [ 95%] Built target llama-batched-bench
    [ 95%] Building CXX object tests/CMakeFiles/test-quant-type-selection.dir/test-quant-type-selection.cpp.o
    [ 95%] Building CXX object tests/CMakeFiles/export-graph-ops.dir/export-graph-ops.cpp.o
    [ 95%] Linking CXX shared library ../../bin/libllama-fit-params-impl.so
    [ 95%] Built target llama-quantize
    [ 95%] Building CXX object tests/CMakeFiles/test-quant-type-selection.dir/get-model.cpp.o
    [ 95%] Linking CXX executable ../bin/test-chat-auto-parser
    [ 95%] Built target llama-fit-params-impl
    [ 95%] Building CXX object tools/fit-params/CMakeFiles/llama-fit-params.dir/main.cpp.o
    [ 95%] Linking CXX executable ../../bin/llama-fit-params
    [ 95%] Linking CXX shared library ../../bin/libllama-completion-impl.so
    [ 95%] Built target test-chat-auto-parser
    [ 96%] Linking CXX executable ../bin/test-gguf-model-data
    [ 96%] Linking CXX executable ../../bin/llama-results
    [ 96%] Built target llama-fit-params
    [ 96%] Built target llama-completion-impl
    [ 97%] Building CXX object tools/completion/CMakeFiles/llama-completion.dir/main.cpp.o
    [ 97%] Linking CXX executable ../../bin/llama-completion
    [ 97%] Built target llama-results
    [ 97%] Built target test-gguf-model-data
    [ 97%] Built target llama-completion
    [ 97%] Linking CXX shared library ../../bin/libllama-perplexity-impl.so
    [ 97%] Linking CXX executable ../../bin/llama-diffusion-cli
    [ 97%] Linking CXX executable ../bin/export-graph-ops
    [ 97%] Built target llama-perplexity-impl
    [ 97%] Building CXX object tools/perplexity/CMakeFiles/llama-perplexity.dir/main.cpp.o
    [ 97%] Linking CXX executable ../../bin/llama-perplexity
    [ 98%] Linking CXX executable ../bin/test-quant-type-selection
    [ 98%] Built target llama-diffusion-cli
    [ 98%] Built target export-graph-ops
    [ 98%] Built target test-quant-type-selection
    [ 98%] Built target llama-perplexity
    [ 98%] Linking CXX executable ../bin/test-jinja
    [ 98%] Linking CXX executable ../../bin/llama-debug-template-parser
    [ 98%] Built target test-jinja
    [ 98%] Built target llama-debug-template-parser
    [ 98%] Linking CXX executable ../../bin/llama-template-analysis
    [ 98%] Linking CXX executable ../bin/test-chat-peg-parser
    [ 98%] Built target llama-template-analysis
    [ 98%] Built target test-chat-peg-parser
    [ 98%] Linking CXX executable ../../bin/llama-imatrix
    [ 98%] Built target llama-imatrix
    [ 98%] Linking CXX static library libserver-context.a
    [ 98%] Built target server-context
    [ 98%] Building CXX object tools/server/CMakeFiles/llama-server-impl.dir/server-models.cpp.o
    [ 98%] Building CXX object tools/server/CMakeFiles/llama-server-impl.dir/server.cpp.o
    [ 98%] Building CXX object tools/server/CMakeFiles/llama-server-impl.dir/server-http.cpp.o
    [ 98%] Building CXX object tools/cli/CMakeFiles/llama-cli-impl.dir/cli.cpp.o
    [ 98%] Building CXX object tests/CMakeFiles/test-chat.dir/get-model.cpp.o
    [ 98%] Building CXX object tests/CMakeFiles/test-chat.dir/test-chat.cpp.o
    [ 99%] Linking CXX executable ../../bin/llama-tts
    [ 99%] Linking CXX shared library ../../bin/libllama-bench-impl.so
    [ 99%] Built target llama-tts
    [ 99%] Built target llama-bench-impl
    [ 99%] Building CXX object tools/llama-bench/CMakeFiles/llama-bench.dir/main.cpp.o
    [ 99%] Linking CXX executable ../../bin/llama-bench
    [ 99%] Built target llama-bench
    [ 99%] Linking CXX executable ../bin/test-backend-ops
    [ 99%] Built target test-backend-ops
    [ 99%] Linking CXX shared library ../../bin/libllama-cli-impl.so
    [ 99%] Built target llama-cli-impl
    [ 99%] Building CXX object tools/cli/CMakeFiles/llama-cli.dir/main.cpp.o
    [100%] Linking CXX executable ../../bin/llama-cli
    [100%] Built target llama-cli
    [100%] Linking CXX shared library ../../bin/libllama-server-impl.so
    [100%] Built target llama-server-impl
    [100%] Building CXX object tools/server/CMakeFiles/llama-server.dir/main.cpp.o
    [100%] Building CXX object app/CMakeFiles/llama-app.dir/llama.cpp.o
    [100%] Linking CXX executable ../../bin/llama-server
    [100%] Built target llama-server
    [100%] Linking CXX executable ../bin/llama
    [100%] Built target llama-app
    [100%] Linking CXX executable ../bin/test-chat
    [100%] Built target test-chat
    # 查看版本
    liqixin@fedora:~/Dev/llama.cpp$ ./build/bin/llama-cli --version
    version: 9282 (4f0e43da6)
    built with GNU 15.2.1 for Linux x86_64
    # 查看是否支持 GPU
    liqixin@fedora:~/Dev/llama.cpp$ ./build/bin/llama-cli -h | grep -E "ngl|gpu|cuda|flash"
    -fa,   --flash-attn [on|off|auto]       set Flash Attention use ('on', 'off', or 'auto', default: 'auto')
    -ngl,  --gpu-layers, --n-gpu-layers N   max. number of layers to store in VRAM, either an exact number,
    -mg,   --main-gpu INDEX                 the GPU to use for the model (with split-mode = none), or for
                                            single value is broadcast across all devices, default: 1024
    --spec-draft-ngl, -ngld, --gpu-layers-draft, --n-gpu-layers-draft N
    -st,   --single-turn                    run conversation for a single turn only, then exit when done
    liqixin@fedora:~/Dev/llama.cpp$ 
    
  • 解决 Fedora 43 (GNOME 49) 远程 SSH 触发 “The system will suspend now!”

    我把家里的台式机升级到Fedora 43 ,GNOME49 用起来确实挺舒服,顺手将 Fedora 43 Workstation 作为远程开发机或服务器使用时,遇到一个特别烦的问题,SSH 连着连着突然断了,因系统自动进入休眠(Suspend)而中断。我在 GNOME 图形界面的电源设置中关闭了所有自动挂起选项,系统依然可能在远程操作期间弹出 The system will suspend now! 并强制断开连接。

    1. 常规配置(图形界面)

    我开始以为在 GNOME 桌面环境的电源管理中配置这样就可以正常解决这个问题但并没有解决,没用

    1. 打开 Settings (设置) -> Power (电源)。
    2. Automatic Screen Blank (自动黑屏):设置为 Off (关闭)。
    3. Automatic Suspend (自动挂起):确保设置为 Off (关闭)。

    2. 禁用 systemd 休眠

    当 GUI 设置失效时,说明系统底层的 systemd 策略仍处于活跃状态。对于需要保持常开的远程机器,最稳妥的方法是屏蔽(Mask)相关的休眠单元。

    2.1 诊断休眠状态

    在操作前,你可以运行以下命令查看系统当前的休眠服务状态:

    sudo systemctl status sleep.target suspend.target hibernate.target hybrid-sleep.target

    2.2 执行屏蔽命令

    通过 mask 命令,我们将休眠相关的 Target 指向 /dev/null。这是一种比 disable 更强力的手段,能够防止任何物理按键、系统 API 或 GUI 插件触发休眠。

    # 一键禁用所有休眠模式
    sudo systemctl mask sleep.target suspend.target hibernate.target hybrid-sleep.target

    执行效果: 系统将完全忽略所有的休眠请求,彻底终结 SSH 远程连接时的中断风险。

    2.3 恢复休眠(可选)

    如果你在未来需要恢复笔记本的合盖休眠或台式机的节能模式,可以使用以下命令解除屏蔽:

    sudo systemctl unmask sleep.target suspend.target hibernate.target hybrid-sleep.target

    3. 技术解析:为什么 GUI 设置后依然会断连

    在 Fedora 43 (GNOME 49) 中,这种情况通常由以下原因引起:

    • 多 Session 竞争: GNOME 的电源设置有时仅对当前的本地会话有效。如果系统停留在 GDM 登录界面,或者系统认为本地处于“无活动”状态,底层 systemd-logind 可能会接管电源策略。
    • SSH 会话识别: 系统默认可能不将纯远程 SSH 流量识别为“用户活动”,从而触发了全局的空闲休眠逻辑。

    追求“Vibe Coding”或需要高可用远程环境的开发者来说,单纯依靠 GNOME 的开关是不够的。“UI 辅助设置 + systemd 强制 Mask” 才是确保 Fedora 43 系统稳如磐石、SSH 永不断线的标准做法。

  • Fedora 开启 Wake-on-LAN(WOL)远程唤醒配置教程

    Wake-on-LAN(WOL,网络唤醒)是一种通过网络远程启动计算机的技术。设备即使处于关机或休眠状态,也可以通过接收特定的 Magic Packet(魔术包)被远程唤醒。

    该功能常用于:

    • 家庭服务器
    • NAS
    • 远程办公主机
    • 低功耗 Linux 设备

    1. 查看网卡名称

    ip link

    示例输出:

    2: enp3s0: <BROADCAST,MULTICAST,UP,LOWER_UP>

    这里的enp3s0为当前网卡名称。

    enp3s0

    2. 检查网卡是否支持 Wake-on-LAN

    查看网卡 WOL 状态:

    sudo ethtool <网卡名称> | grep Wake-on

    例如:

    sudo ethtool enp3s0 | grep Wake-on

    输出示例:

    Supports Wake-on: pumbg
    Wake-on: d

    Wake-on 参数说明

    参数含义
    d禁用 Wake-on-LAN
    pPHY 活动唤醒
    u单播数据包唤醒
    m多播数据包唤醒
    b广播数据包唤醒
    aARP 数据包唤醒
    gMagic Packet 唤醒
    s安全 Magic Packet
    f特定过滤器唤醒

    其中最常用的是g表示支持 Magic Packet 唤醒。

    3. 查看 NetworkManager 网络连接名称

    Fedora 默认使用 NetworkManager 管理网络。

    查看当前连接:

    sudo nmcli connection show

    示例:

    NAME                UUID                                  TYPE      DEVICE
    Wired connection 1  xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx  ethernet  enp3s0

    记住连接名称:

    Wired connection 1

    4. 开启 Wake-on-LAN

    使用 nmcli 配置永久 WOL:

    sudo nmcli connection modify "Wired connection 1" 802-3-ethernet.wake-on-lan magic

    该配置在系统重启后依然有效。

    5. 重新应用网络配置

    立即生效:

    sudo nmcli device reapply <网卡名称>

    例如:

    sudo nmcli device reapply enp3s0

    6. 验证是否开启成功

    再次检查:

    sudo ethtool <网卡名称> | grep Wake-on

    如果输出Wake-on: g说明 Wake-on-LAN 已成功开启。

  • 技嘉 Z690 网卡消失找不到硬件,BIOS识别不到网卡的修复方法

    我上一次被 PC 硬件折磨到动用“重装系统”这种方案,已经是很多年前了。

    没想到在 2026 年,我居然会因为一个“凭空消失的网卡”,再次体验到这种古老的绝望。而最离谱的是,最后解决问题的核心工具,不是驱动,甚至不是 AI,而是一块 CR2032 电池和一把螺丝刀。


    1. 事情开始于一次普通断网

    电脑原本运行得稳如老狗,突然之间,网络毫无征兆地断了。

    第一反应当然很普通:路由器抽风?网线松了?还是驱动崩了?毕竟这种问题平时太常见了。我按照标准流程准备顺手修好它,但很快,我发现事情完全超出了预期。

    2. 板载网卡不见了

    打开设备管理器,我原本以为会看到黄色感叹号或未知设备。

    结果,“网络适配器”分类下空空如也。
    不是报错,不是驱动异常,而是整个网卡硬件直接消失了。

    那一瞬间我心里已经有点发凉:如果设备在系统底层都不存在,那这事儿重装驱动也不太能搞定。

    3. 排查问题

    接下来我几乎把所有能想到的常规方案全试了一遍:

    • 软件层: 重启、更新驱动、Windows 网络重置。无效。
    • 硬件扫描: 疯狂点击“扫描硬件改动”。无效。
    • 驱动强刷: 重新安装网卡驱动

    我甚至还问了几个 AI,得到的答案基本都差不多
    但问题是我这里连“硬件”都没了。

    我做出了那个“最后底线”的决定:重装系统。

    备份数据、制作镜像、格式化、重装 Windows。折腾了近一个小时后,我满怀期待地进入桌面点开设备管理器——网卡依然不存在。

    我以为硬件可能彻底烧了,但我没死心决定在试试看

    4. 真正让我破防的是 BIOS

    我重启进入 BIOS

    BIOS里也找不到网卡

    我尝试了重置BIOS默认设置,还是不行

    5. 物理办法

    既然软件层已经彻底无解,我开始了最原始的物理操作:

    1. 彻底断电: 关机,拔掉电源线
    2. 物理复位: 拆机,扣下主板上的 CR2032 纽扣电池。
    3. 强制放电: 用螺丝刀短接 CLR_CMOS 跳线针脚约 10-15 秒。
    4. 复活仪式: 等待片刻,装回电池,插电,开机。

    6. 结局:奇迹发生了

    重新开机进入 BIOS,熟悉的 LAN 信息重新出现了。进入系统后,网卡秒回,网络秒通。

    一切像什么都没发生过一样。但我很清楚,这不是“修好了”,而是通过物理手段,把一个卡死的硬件状态强行从底层重置了。

    这次经历让我意识到,现在的 PC 故障越来越像一种“赛博玄学”。我花了大量时间去折腾逻辑、重装系统,最后真正解决问题的,却是一把螺丝刀和一次彻底的放电。

  • Copy Fail 与 Dirty Frag:Linux Page Cache 提权漏洞中的状态一致性问题

    最近Linux 内核安全研究中出现了两起受到广泛关注的本地提权漏洞:

    • Copy Fail(CVE-2026-31431)
    • Dirty Frag(CVE-2026-43284 / CVE-2026-43500)

    从公开分析来看,两者都属于 Linux Local Privilege Escalation(LPE)类别,但其技术路径并不完全落在传统的 memory corruption 模型中。

    更值得注意的是,它们都指向了同一个方向:

    Linux Kernel 在 Page Cache、Pipe Buffer 以及跨子系统对象生命周期管理中的状态一致性问题,正在逐渐演化为一类新的攻击面。

    传统 LPE 研究通常围绕:

    • use-after-free
    • heap corruption
    • race condition
    • refcount bug

    但近年来的漏洞开始更多涉及:

    • Page Cache consistency
    • splice / zero-copy data path
    • buffer ownership transfer
    • fragment lifecycle transition
    • subsystem state synchronization

    从安全研究与云安全的角度,尝试对这类问题进行更谨慎的结构化分析,而不依赖未完全确认的 root-cause 假设。

    1. 攻击面变化:Page Cache 的角色正在改变

    Linux Page Cache 原本的设计目标是性能优化与 I/O 加速,它横跨多个关键子系统:

    • VFS(Virtual File System)
    • Memory Management
    • Block Layer
    • File Mapping
    • Writeback Mechanism

    在理想模型中,Page Cache 应当满足严格的一致性约束:

    文件内容、缓存视图与权限状态应保持一致。

    但从近年来漏洞演化来看,这一假设在复杂路径下正在变得脆弱。

    以 Dirty Pipe 为代表的一类问题已经证明:

    攻击者可以通过 buffer 语义与内核路径组合,影响 Page Cache 中的只读映射行为。

    Copy Fail 与 Dirty Frag 则进一步将问题扩展到:

    Page Cache 与跨 subsystem 状态同步之间的边界问题。

    2. Copy Fail:Page Cache 写入路径的异常语义

    根据 Microsoft 与 Tenable 的公开分析,Copy Fail(CVE-2026-31431)与 Linux AF_ALG 子系统及 splice() 路径相关。

    漏洞的核心并不在于单一 memory corruption,而更接近于:

    在特定 copy/pipe 组合路径中,Page Cache 写入权限状态被错误继承或误判。

    可以抽象为如下逻辑结构:

    splice(fd, ..., pipefd[1], ...);
    
    /* kernel state: page appears writable under certain conditions */
    
    write(pipefd[1], buf, len);

    利用 splice + pipe buffer 的状态机缺陷,使 write() 误写入 Page Cache,从而实现内核级数据污染或提权

    关键问题不在 syscall 本身,而在于:

    • page ownership state
    • write permission inference
    • pipe buffer semantics

    之间的不一致。

    从结果来看,该类问题可能导致:

    • 文件缓存内容被间接修改
    • 磁盘文件本身未发生变化
    • 传统完整性检测无法直接观测异常

    因此其风险模型更接近:

    Page Cache-based integrity divergence

    而非传统 file overwrite exploit。

    3. Dirty Frag:跨子系统 fragment 状态一致性问题(仍在研究中)

    Dirty Frag(CVE-2026-43284 / CVE-2026-43500)在公开资料中被描述为涉及:

    • ESP/IPSec
    • RxRPC
    • 网络封装与 fragment 处理路径

    相关分析可参考:

    从目前公开信息来看,需要谨慎区分两点:

    已确认部分

    • 漏洞可用于本地提权
    • exploit 不依赖传统 race condition
    • 与 fragment/page 相关内核路径有关
    • 涉及网络 stack 与 memory subsystem 交互

    未完全确认部分

    • 完整 root-cause 机制
    • 是否为单点 bug 或组合条件问题
    • 是否主要来自 refcount / ownership 错误 / state machine error

    因此,更稳妥的研究表述是:

    Dirty Frag 可能反映了 Linux 内核在 page/fragment 生命周期管理中跨 subsystem 状态同步的复杂性问题。

    而不是将其归因于单一类型 bug。

    4. 为什么这类漏洞对云环境影响更显著

    从云安全角度来看,这类 LPE 漏洞的风险模型与传统主机环境不同。

    原因在于:

    现代云基础设施普遍具有以下特征:

    • container 与 host kernel 共享
    • 多租户运行在同一 kernel 上
    • runtime 依赖 namespace/cgroup isolation
    • CI/CD 与 ephemeral workload 大量存在

    因此一旦低权限进程具备 LPE 能力,其影响可能扩展为:

    • Container escape
    • Node compromise
    • Kubernetes workload takeover
    • Multi-tenant isolation bypass

    更关键的是:

    在 Page Cache 类漏洞中,攻击行为可能不会直接修改磁盘文件,因此:

    • 文件完整性检测(FIM)
    • hash-based monitoring
    • 基于落地行为的 EDR

    可能无法完整覆盖攻击路径。

    5. Linux Kernel exploitation 的趋势变化

    从历史来看,Linux kernel exploit 主要集中在:

    • heap corruption
    • use-after-free
    • race condition
    • type confusion

    但随着内核加固机制逐步增强:

    • KASLR
    • SMEP / SMAP
    • refcount hardening
    • allocator hardening

    传统 memory corruption exploit 的成本正在上升。

    与此同时,研究方向逐渐转向:

    • object ownership model
    • lifecycle transition correctness
    • cache coherence assumptions
    • subsystem interaction boundaries
    • state machine consistency

    Copy Fail 与 Dirty Frag 更接近这一趋势,而不是传统漏洞类型的简单延续。

    特别是在:

    • Page Cache
    • splice / zero-copy path
    • pipe buffer semantics
    • fragment handling

    这些复杂路径中,状态一致性问题正在变得更加重要。

    6. 安全运营视角:可观测性问题而非单点漏洞问题

    从安全运营角度来看,这类漏洞的核心挑战不在于“是否已修复”,而在于:

    攻击行为在 runtime 层可能不可见。

    原因包括:

    • 文件未发生变化
    • syscall 行为合法
    • 无明显 persistence artifact
    • 内核层状态异常不反映到用户态

    因此传统检测体系可能需要补充:

    6.1 Runtime telemetry(优先 eBPF)

    • syscall graph tracing
    • kernel function behavior monitoring
    • unusual splice / pipe activity detection

    6.2 容器层隔离强化

    • seccomp profiles
    • minimal capability sets
    • rootless container design

    6.3 高风险路径建模

    重点关注:

    • splice()
    • pipe buffer reuse patterns
    • AF_ALG usage patterns
    • Page Cache write anomaly signals

    7. Copy Fail 与 Dirty Frag 并不只是新增的 Linux LPE 漏洞。

    它们更重要的意义在于:

    Linux Kernel 的攻击面正在从“内存破坏模型”,逐步扩展到“状态一致性模型”。

    尤其是在 Page Cache 与跨 subsystem 交互路径中,传统基于 memory corruption 的安全假设正在被逐步弱化。

    对于安全研究而言,这意味着攻击面正在变得更抽象、更系统化。

    而对于云安全与安全运营而言,挑战也在发生变化:

    问题不再只是“是否存在漏洞”,而是:

    如何在 runtime 层观测到这些“非破坏型状态异常”。

  • AI代码生成安全策略:内网隔离与私有化模型落地指南

    AI代码生成进入企业应用后,安全成核心问题,使用AI快速生成代码已成为现实。但一个随之而来的问题也变得紧迫:生成的代码涉及商业逻辑、客户数据、技术架构,是否应该继续依赖云端模型,还是应该隔离到内网? 内网隔离和私有化模型不是可有可无的功能,而是企业安全策略的重要组成。与其担心成本,不如从风险角度审视:一次泄露损失远大于长期的架构投资。

    现在的问题不是”要不要用AI生成代码”,而是”如何安全地用AI生成代码”。 这不仅是技术问题,更是关乎企业安全战略的决策。本文基于实践经验,分享我的观察和思考。

    为什么要重新审视AI代码生成的安全性?

    在过去,代码是有形资产,保管在源代码库和服务器里。但AI改变了这一切:

    1. 数据流动的不透明性

    当你将代码片段发送给云端AI模型(如ChatGPT、Claude)来生成代码时:

    • 代码被上传到第三方服务器
    • 可能被用于模型训练(如果未关闭相关选项)
    • 存储在云端的日志中
    • 可能在隐私政策更新时被用于新的目的

    风险:公司的业务逻辑、系统架构、API设计等敏感信息外泄。

    2. 法规遵从的困境

    不同国家和行业有不同的数据保护要求:

    • 欧盟:GDPR对数据跨境传输有严格限制
    • 中国:网络安全法、数据安全法要求重要数据本地存储
    • 金融行业:更严格的信息安全要求
    • 医疗行业:HIPAA等法规对患者数据保护

    3. 竞争情报泄露

    AI模型经过大规模数据训练,理论上可以记忆或推断输入数据模式。虽然开发者声称不会这样做,但:

    • 技术上仍存在风险
    • 合同条款可能变更
    • 子公司可能有不同的政策

    4. 供应链安全考虑

    一旦依赖某个AI厂商,就引入了新的供应链风险:

    • 服务可用性(宕机、限流)
    • 价格变化
    • 政策突变
    • 地缘政治风险

    现状对比:云端vs内网模型

    云端模型(如ChatGPT、Claude)

    优势:

    • 能力最强,模型参数量大
    • 无需本地计算资源
    • 维护成本低
    • 快速迭代,总是最新版本

    劣势:

    • 数据可能外泄
    • 成本随使用量增加
    • 依赖网络连接
    • 无法自定义
    • 法规遵从困难

    私有化蒸馏模型(本地部署)

    优势:

    • 数据完全本地化,无外泄风险
    • 符合各类法规要求
    • 可离线运行
    • 长期成本更低
    • 可针对公司业务优化

    劣势:

    • 需要本地计算资源(特别是GPU)
    • 模型能力较弱(通常比开源模型好,比闭源模型差)
    • 需要技术团队维护
    • 初期部署成本高
    • 需要持续更新

    我的建议方案:分层防御

    基于安全性、成本与工程可实现性,推荐将AI代码生成方案分成三层,形成层级防护策略:

    第一层:云端模型(开放区)

    使用场景:

    • 学习和探索性编程
    • 公开技术讨论
    • 通用工具代码(如数据处理函数)
    • 非敏感算法实现

    操作规范:

    • 允许:通用函数、公开库调用、技术原理咨询
    • 禁止:核心业务逻辑、API密钥、数据库连接字符串、客户数据、架构图

    第二层:私有化蒸馏模型(内网区)

    使用场景:

    • 核心业务逻辑编码
    • 敏感模块生成
    • 涉及客户或企业数据的功能
    • 系统架构与权限控制相关代码

    第二层目标:数据在企业可控网络内流转,避免敏感信息进入公共云。

    第三层:代码审查与合规控制

    不论模型部署方式,都应强制执行:

    1. 不直接上生产:AI生成代码需人工审核
    2. 代码审查:资深工程师复核
    3. 敏感词扫描:自动检测敏感字段(密钥、账号、IP等)
    4. 依赖评估:验证第三方库安全性
    5. 安全审计:定期检查模型调用日志与数据流

    常见疑虑和解答

    Q: 私有化模型的能力会不会太弱?

    A: 这取决于选择。目前的开源模型在代码生成上已经相当不错。虽然不如最强的闭源模型,但对企业内部使用完全足够。关键是合适即可,不必最强。而且私有化模型可以微调,针对公司代码风格优化。

    Q: 我们公司很小,负担不起模型的投入啊?

    A: 有几个选择:

    1. 使用开源模型,租用按小时计费的GPU
    2. 多个公司共享一套私有化部署(虽然涉及信息共享)
    3. 优先保护最敏感的部分,其他部分先用云端
    4. 等待模型成本进一步下降(正在发生)

    Q: 云端模型是否真的会泄露数据?

    A: 根据公开信息:

    • OpenAI、Anthropic都承诺不用对话来训练模型(可选中禁用)
    • 但源代码中的数据依然被传输和储存
    • 即使不主动泄露,也存在被黑客窃取、员工泄露等风险
    • 风险永远存在于数据传输过程

    Q: 团队不愿意放弃ChatGPT怎么办?

    A: 这很正常。建议:

    1. 明确禁止使用ChatGPT处理敏感代码(制度强制)
    2. 为团队提供同样好用的内部替代品
    3. 展示安全事件的案例(激励改变)
    4. 渐进式迁移而不是一刀切