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
相关产品推荐
相关产品推荐

