交叉编译libnfc至Aarch64 Android 13时遇链接错误求解决方案
解决libnfc交叉编译至AArch64 Android 13的链接错误
错误根源
链接器报错--fix-cortex-a53-843419 is only supported on AArch64 targets,说明要么交叉编译的目标架构未正确设置为AArch64,要么该链接参数被错误注入到了非AArch64的编译流程中。
分步解决方案
确认交叉编译工具链配置
在configure阶段必须明确指定AArch64的Android目标,使用NDK提供的对应工具链:./configure --host=aarch64-linux-android --prefix=/your/install/path \ CC=/path/to/ndk/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android33-clang \ CXX=/path/to/ndk/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android33-clang++其中
33是Android 13对应的API级别,需根据你使用的NDK版本调整。修正链接器参数的条件添加
检查libnfc的Makefile或configure生成的配置文件,找到添加--fix-cortex-a53-843419的位置,确保该参数仅在AArch64目标下启用:ifeq ($(TARGET_ARCH),aarch64) LDFLAGS += --fix-cortex-a53-843419 endif如果该参数是全局CFLAGS/LDFLAGS中硬编码的,直接移除或添加条件判断。
验证NDK版本兼容性
确保使用的NDK版本≥25,低版本NDK对Android 13的AArch64支持存在缺陷,可能导致链接器无法识别目标架构。清理并重新编译
执行make clean清除旧编译产物,再重新运行configure和make,确保新配置完全生效。
验证编译结果
编译完成后,用file命令确认生成的库是AArch64架构:
file /your/install/path/lib/libnfc.so
输出需包含aarch64标识,证明目标架构正确。
内容的提问来源于stack exchange,提问作者Anh Trần Tuấn
相关产品推荐
相关产品推荐

