You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android 7.1源码编译报错:kati无法找到'string'文件

解决Android 7.1源码编译中'string' file not found错误

编译Android 7.1源码时,出现编译kati模块找不到<string>头文件的错误,核心错误信息:

build/kati/flags.h:18:10: fatal error: 'string' file not found
#include
^

完整编译日志:

prebuilts/clang/host/linux-x86/clang-2690385/bin/clang++   -fno-exceptions -Wno-multichar -m64 -Wa,--noexecstack -fPIC -no-canonical-prefixes -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 -fstack-protector -D__STDC_FORMAT_MACROS -D__STDC_CONSTANT_MACROS -DANDROID -fmessage-length=0 -W -Wall -Wno-unused -Winit-self -Wpointer-arith -O2 -g -fno-strict-aliasing -DNDEBUG -UDEBUG -D__compiler_offsetof=__builtin_offsetof -Wno-reserved-id-macro -Wno-format-pedantic -Wno-unused-command-line-argument   --gcc-toolchain=prebuilts/gcc/linux-x86/host/x86_64-linux-glibc2.15-4.8 -fstack-protector-strong    --gcc-toolchain=prebuilts/gcc/linux-x86/host/x86_64-linux-glibc2.15-4.8 --sysroot prebuilts/gcc/linux-x86/host/x86_64-linux-glibc2.15-4.8/sysroot -Bprebuilts/gcc/linux-x86/host/x86_64-linux-glibc2.15-4.8/x86_64-linux/bin -target x86_64-linux-gnu   -Wsign-promo -Wno-inconsistent-missing-override   --gcc-toolchain=prebuilts/gcc/linux-x86/host/x86_64-linux-glibc2.15-4.8 --sysroot prebuilts/gcc/linux-x86/host/x86_64-linux-glibc2.15-4.8/sysroot -isystem prebuilts/gcc/linux-x86/host/x86_64-linux-glibc2.15-4.8/x86_64-linux/include/c++/4.8 -isystem prebuilts/gcc/linux-x86/host/x86_64-linux-glibc2.15-4.8/x86_64-linux/include/c++/4.8/x86_64-linux -isystem prebuilts/gcc/linux-x86/host/x86_64-linux-glibc2.15-4.8/x86_64-linux/include/c++/4.8/backward -target x86_64-linux-gnu -c -std=c++11 -g -W -Wall -MMD -MP -O -DNOLOG -march=native -o out/host/linux-x86/obj/EXECUTABLES/ckati_intermediates/affinity.o build/kati/affinity.cc
In file included from build/kati/affinity.cc:17:
build/kati/flags.h:18:10: fatal error: 'string' file not found
#include <string>
         ^
1 error generated.
make: *** [build/kati/Makefile.ckati:89: out/host/linux-x86/obj/EXECUTABLES/ckati_intermediates/affinity.o] Error 1

以下是针对性解决方案:

  • 检查并修复预编译工具链的C++标准库
    从日志可见编译依赖源码自带的预编译gcc工具链,先确认对应路径下的<string>文件是否存在:

    ls prebuilts/gcc/linux-x86/host/x86_64-linux-glibc2.15-4.8/x86_64-linux/include/c++/4.8/string
    

    如果文件不存在,说明工具链同步不完整,重新同步对应模块:

    repo sync -c prebuilts/gcc/linux-x86/host/x86_64-linux-glibc2.15-4.8
    
  • 切换为系统clang编译
    既然系统clang可正常编译测试项目,临时指定使用系统版本替代源码自带的预编译clang:

    export CC=/usr/bin/clang
    export CXX=/usr/bin/clang++
    # 重新初始化编译环境
    source build/envsetup.sh
    lunch 你的目标机型(例如aosp_x86_64-eng)
    make -j$(nproc)
    
  • 清理冲突环境变量
    若设置了CPATH、CXXFLAGS等环境变量,可能覆盖源码默认头文件路径,清空后重试:

    unset CPATH C_INCLUDE_PATH CPLUS_INCLUDE_PATH CXXFLAGS
    source build/envsetup.sh
    lunch 你的目标机型
    make -j$(nproc)
    
  • 清理编译缓存并重新构建
    编译缓存可能导致异常,清理后重新构建:

    make clean
    rm -rf out/
    source build/envsetup.sh
    lunch 你的目标机型
    make -j$(nproc)
    
  • 修改kati模块编译参数
    若上述方法无效,手动修改build/kati/Makefile.ckati,在编译参数中追加系统C++标准库路径:
    在CXXFLAGS或编译命令中添加:

    -isystem /usr/include/c++/$(gcc --version | grep -oP '\d+\.\d+\.\d+' | head -n1)
    

    之后重新执行编译。

内容的提问来源于stack exchange,提问作者bekir.corum

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 09:15:34