You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
~/.mcpp/registry/data/xpkgs/xim-x-musl-gcc/15.1.0/bin/
~/.../15.1.0/bin $ ls
aarch64-linux-musl-c++ ar gcc-nm nm
aarch64-linux-musl-cc as gcc-ranlib objcopy
aarch64-linux-musl-g++ c++ gcov objdump
aarch64-linux-musl-gcc c++filt gcov-dump ranlib
aarch64-linux-musl-gcc-15.1.0 cpp gcov-tool readelf
aarch64-linux-musl-gcc-ar elfedit gprof size
aarch64-linux-musl-gcc-nm g++ ld strings
aarch64-linux-musl-gcc-ranlib gcc ld.bfd strip
addr2line gcc-ar lto-dump
~/.../15.1.0/bin $ ./gcc --version
gcc (GCC) 15.1.0
Copyright (C) 2025 Free Software Foundation, Inc.
This is free software; see the sourcefor copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
~/.../15.1.0/bin $
Activity
tz12323 commentedon Jun 22, 2026
部分cmake版本较低,无法编译module,可能需要更高版本的cmake,或者换用make会拥有更好的跨平台编译能力。
npp-zep commentedon Jun 22, 2026
谢谢回复。不过我用的 CMake 是 4.3.0,版本其实够高了。换 Make 可能也解决不了,因为问题出在更底层。我在 Termux 里直接用 clang++ -std=c++23 编译 import std; 就报错 module 'std' not found,根本还没用到 CMake 或 Make。
tz12323 commentedon Jun 22, 2026
我检查了一下termux的../usr/下的文件夹,里面没有发现std.cppm 或者std.cc等文件,无法手动编译std module。也许从llvm对应的版本中下载std.cppm std.compat.cppm然后手动编译,并且在使用cmake编译时链接这个moudle或许可以解决这个问题。
npp-zep commentedon Jun 22, 2026
我按照你的建议尝试了以下步骤:
从 LLVM 21.1.8 源码包中查找 std.cppm
尝试用 -fmodules间接使用标准库:
尝试降级为传统 #include模式: - 修改了 src/main.cpp 中的 import std; 为 #include
Sunrisepeak commentedon Jun 22, 2026
我初步看怎么出个 aarch64 版本的mcpp 到时候贴上面 你可以试一试
tz12323 commentedon Jun 22, 2026
对应的源码路径在libcxx/modules/std.cppm.in,你可以试着把整个libcxx文件夹clone到本地,然后手动编译
Sunrisepeak commentedon Jun 22, 2026
出mcpp的aarch64其实容易, 但是要可用的话需要 对应工具链和mcpp一起适配 可能走 musl 这套路径短点 后面我试一下
npp-zep commentedon Jun 23, 2026
问题根因似乎是 Android Bionic libc 与 LLVM C++ 模块化不兼容,而非 aarch64 Linux 通用问题。在标准 ARM64 Linux(glibc)上应该大概可以正常编译
所以我把issue标题改了一下,这样更恰当一点
[-]mcpp 在 aarch64-linux 上的编译困难问题[/-][+]mcpp 在 Android Termux(Bionic)上的编译困难问题[/+]Sunrisepeak commentedon Jun 23, 2026
目前你可以先安装 xlings 工具, 然后通过xlings 安装 mcpp 工具本身是可以运行的 但是编译器 目前有点问题, 你要是有兴趣可以 帮忙排查排查 (目前 mcpp 已经有 aarch64版本了)
Sunrisepeak commentedon Jun 23, 2026
android 13 好像会拦截一些系统调用导致一些问题
npp-zep commentedon Jun 23, 2026
我按照建议通过 xlings 安装了 mcpp,目前进展如下:
成功部分
xlings install mcpp -y成功安装 mcpp v0.0.59MCPP_VENDORED_XLINGS环境变量后,mcpp 可以正常启动当前状态
待验证
环境信息
npp-zep commentedon Jun 23, 2026
重大突破!在 Android Termux 上成功编译并运行了 mcpp 项目!
测试环境
测试结果
编译后的程序成功运行,输出:
关键意义
import std在 Android 上成功编译 —— 通过 musl 工具链绕过了 Bionic 的限制std::println正常工作 —— C++23 特性完整支持后续建议
npp-zep commentedon Jun 23, 2026
mcpp 在 Android Termux 上成功自举!
验证内容
aarch64-linux-musl工具链(GCC 15.1.0)验证结果
# 自编译的 mcpp 可以正常运行 ./mcpp --version mcpp v0.0.60 — modern C++23 build toolSunrisepeak commentedon Jun 23, 2026
第一运行mcpp有没有卡很长时间, 我的Termux上总是网络请求卡住, 不知道是我的环境的问题还是工具的问题
第一次初始化环境 大概多长时间 有没有卡的地方
npp-zep commentedon Jun 23, 2026
网络环境:移动网络,直连 GitHub,未使用代理。
我在 Termux 上首次运行
mcpp build的实测情况:网络环境
patchelf+ninja+aarch64-linux-musl-gcc(约 226 MB)耗时
工具链位置
GCC 被放在:
Sunrisepeak commentedon Jun 24, 2026
Test on Termux - ok (补验证截图)