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

交叉编译AArch64时出现Undefined symbol "_mcount"错误求助

问题分析与解决办法

你的链接错误核心原因是musl libc默认不提供gprof所需的_mcount符号——musl为了保持轻量简洁,没有内置gprof的性能分析支持,这和aarch64工具链本身无关,你添加-pg编译/链接选项的操作是正确的。

下面是几种可行的解决方向:

  • 重新编译带Profiling支持的musl libc
    如果你是自行构建的musl,可以在编译时启用profiling相关配置(比如部分musl补丁集提供CONFIG_PROFILING选项),让musl生成_mcount等gprof依赖符号。如果用的是预编译工具链里的musl,可能需要重新编译整个工具链并配置musl开启profiling。

  • 手动添加_mcount存根函数
    写一个简单的_mcount空实现来解决链接错误:

    void _mcount(void) {
        // 空实现,仅用于通过链接
    }
    

    将这个文件编译后和你的项目一起链接。注意:这种方法只能解决链接问题,无法让gprof生成有效的性能分析数据,因为没有实际的计数逻辑。

  • 更换性能分析工具
    针对嵌入式系统,gprof并不是唯一选择:

    • 如果SO3支持,可以尝试使用perf工具(需要内核支持性能事件);
    • 轻量场景下可以手动添加插桩代码统计函数耗时;
    • 也可以考虑使用ftrace等内核级追踪工具。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 13:21:14