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

从Macos M1(armv8)交叉编译Ninja到Android armv8遇STL错误

交叉编译Ninja到Android armv8时遇到Invalid Android STL: libc++错误

环境信息

  • 构建工具:基于conan-package-tools的Conan
  • 宿主系统:Macos M1 (armv8), Monterey 12.6
  • 使用NDK版本:22.1.7171670
  • 目标平台:Android armv8
  • Python版本:
% python --version
Python 3.10.8

当前构建配置

builder.add(settings={
        "compiler.cppstd": "17",
        "os": "Android",
        "arch": "armv8",
        "build_type": "Release",
        "os.api_level": "24",
        "compiler": "clang",
        "compiler.version": "11",
        "compiler.libcxx": "libc++",
        "os_build": "Macos",
        "arch_build": "armv8"
    }, options={}, env_vars={
        "CONAN_CMAKE_ANDROID_NDK": "<path>/25.1.8937393"
    }, build_requires={})

编译错误日志

ninja/1.11.1@local/workbench:
ninja/1.11.1@local/workbench: Copying sources to build folder
ninja/1.11.1@local/workbench: Building your package in /Users/ernesto.messina/.conan/data/ninja/1.11.1/local/workbench/build/4cd8a0226669e0be90b7c9a8fcdc9ee41453a7d3
ninja/1.11.1@local/workbench: Generator txt created conanbuildinfo.txt
ninja/1.11.1@local/workbench: Calling generate()
ninja/1.11.1@local/workbench: WARN: Using the new toolchains and generators without specifying a build profile (e.g: -pr:b=default) is discouraged and might cause failures and unexpected behavior
ninja/1.11.1@local/workbench: Preset 'release' added to CMakePresets.json. Invoke it manually using 'cmake --preset release'
ninja/1.11.1@local/workbench: If your CMake version is not compatible with CMakePresets (<3.19) call cmake like: 'cmake <path> -G "Unix Makefiles" -DCMAKE_TOOLCHAIN_FILE=/Users/ernesto.messina/.conan/data/ninja/1.11.1/local/workbench/build/4cd8a0226669e0be90b7c9a8fcdc9ee41453a7d3/build/generators/conan_toolchain.cmake -DCMAKE_POLICY_DEFAULT_CMP0091=NEW -DCMAKE_BUILD_TYPE=Release'
ninja/1.11.1@local/workbench: Aggregating env generators
ninja/1.11.1@local/workbench: Calling build()
ninja/1.11.1@local/workbench: CMake command: cmake -G "Unix Makefiles" -DCMAKE_TOOLCHAIN_FILE="/Users/ernesto.messina/.conan/data/ninja/1.11.1/local/workbench/build/4cd8a0226669e0be90b7c9a8fcdc9ee41453a7d3/build/generators/conan_toolchain.cmake" -DCMAKE_INSTALL_PREFIX="/Users/ernesto.messina/.conan/data/ninja/1.11.1/local/workbench/package/4cd8a0226669e0be90b7c9a8fcdc9ee41453a7d3" -DCMAKE_POLICY_DEFAULT_CMP0091="NEW" -DCMAKE_BUILD_TYPE="Release" "/Users/ernesto.messina/.conan/data/ninja/1.11.1/local/workbench/build/4cd8a0226669e0be90b7c9a8fcdc9ee41453a7d3/src"
-- Using Conan toolchain: /Users/ernesto.messina/.conan/data/ninja/1.11.1/local/workbench/build/4cd8a0226669e0be90b7c9a8fcdc9ee41453a7d3/build/generators/conan_toolchain.cmake
CMake Error at /Users/ernesto.messina/Library/Android/sdk/ndk/22.1.7171670/build/cmake/android.toolchain.cmake:381 (message):
  Invalid Android STL: libc++.
Call Stack (most recent call first):
  /Users/ernesto.messina/.conan/data/ninja/1.11.1/local/workbench/build/4cd8a0226669e0be90b7c9a8fcdc9ee41453a7d3/build/generators/conan_toolchain.cmake:27 (include)
  /opt/homebrew/Cellar/cmake/3.24.2/share/cmake/Modules/CMakeDetermineSystem.cmake:124 (include)
  CMakeLists.txt:6 (project)


CMake Error: CMake was unable to find a build program corresponding to "Unix Makefiles".  CMAKE_MAKE_PROGRAM is not set.  You probably need to select a different build tool.
CMake Error: CMAKE_C_COMPILER not set, after EnableLanguage
CMake Error: CMAKE_CXX_COMPILER not set, after EnableLanguage
-- Configuring incomplete, errors occurred!

已尝试的解决方法

  • 修改SDK版本,错误未解决
  • 将compiler.libcxx改为c++_static和c++_shared,出现编译器无法正确检测的相关错误

内容的提问来源于stack exchange,提问作者harryPoker

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 21:15:36