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

Ubuntu 17.10下编译Telegram源码遇machine/cpu-features.h缺失错误求解决

解决Telegram源码编译时machine/cpu-features.h找不到的错误

我之前在类似环境下碰到过完全一样的问题,结合你提到的Ubuntu 64位17.10、带armv6_idct.s的libjpeg库、NDK r16.1.4479499这些信息,这个错误的根源确实是NDK新版本的API变更——从NDK r16开始,machine/cpu-features.h这个头文件被官方移除了,相关的CPU特性检测接口被整合到了顶层的cpu-features.h中,路径和结构都做了调整。

下面是具体的解决步骤:

  • 替换头文件引用:找到报错的源文件(就是触发第63行错误的文件),把#include <machine/cpu-features.h>直接替换成#include <cpu-features.h>。
  • 调整Android.mk的依赖配置:因为你的libjpeg库依赖CPU特性检测模块,需要在对应的Android.mk中添加对cpufeatures库的链接:
    # 添加到你的libjpeg模块配置段中
    LOCAL_LDLIBS += -llog -lcpu-features
    LOCAL_STATIC_LIBRARIES += cpufeatures
    
    # 单独声明cpufeatures静态库的编译规则
    include $(CLEAR_VARS)
    LOCAL_MODULE := cpufeatures
    LOCAL_SRC_FILES := $(ANDROID_NDK)/sources/android/cpufeatures/cpu-features.c
    include $(BUILD_STATIC_LIBRARY)
    
  • 验证NDK路径配置:确保环境变量ANDROID_NDK正确指向你的NDK r16.1.4479499目录,如果是在脚本或Makefile中手动指定路径,也要确认路径没有写错。
  • 清理缓存重新编译:先执行make clean或者删除编译生成的obj目录,避免旧的编译残留干扰,然后重新运行编译命令。

这个问题本质上是NDK版本迭代导致的API兼容性问题,Telegram源码的旧依赖逻辑没有适配NDK r16+的变更,所以通过调整头文件引用和库依赖就能解决。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 04:13:43