如何在Ubuntu中交叉编译适用于ARM64的TensorFlow r1.15 C++静态库
解决TensorFlow r1.15 C++静态库适配ARM64平台的方案
x86架构Ubuntu上编译的libtensorflow-core.a无法直接在ARM64平台使用,二者指令集不兼容。你需要针对ARM64架构重新编译TensorFlow静态库,以下是两种可行方案:
方案一:在x86 Ubuntu上交叉编译ARM64版本
安装ARM64交叉编译工具链
在Ubuntu22.04上执行以下命令安装适配ARM64的编译工具:sudo apt update && sudo apt install gcc-aarch64-linux-gnu g++-aarch64-linux-gnu配置TensorFlow编译参数
进入TensorFlow的makefile目录,通过环境变量指定交叉编译工具:cd tensorflow-r1.15/tensorflow/contrib/makefile export TARGET_CC=aarch64-linux-gnu-gcc export TARGET_CXX=aarch64-linux-gnu-g++ export TARGET_FLAGS="-march=armv8-a"执行编译
可选择官方脚本或直接调用make加速编译:# 方式1:使用官方编译脚本 ./build_all_linux.sh # 方式2:直接调用make,并行编译数匹配CPU核心数 make -j$(nproc) TARGET=aarch64
方案二:在ARM64设备/虚拟机上原生编译
如果有ARM64架构的Ubuntu系统(实体设备、云服务器或QEMU虚拟机均可),可直接原生编译:
- 安装编译依赖
在ARM64 Ubuntu22.04上安装基础编译工具:sudo apt update && sudo apt install build-essential curl git python3 python3-pip - 执行原编译脚本
直接运行你之前使用的编译命令即可:../tensorflow-r1.15/tensorflow/contrib/makefile/build_all_linux.sh
验证编译结果
编译完成后,用file命令检查静态库架构是否为ARM64:
file tensorflow/contrib/makefile/gen/lib/libtensorflow-core.a
输出应包含ARM aarch64字样,说明库适配ARM64平台。
内容的提问来源于stack exchange,提问作者Franklin-Wang
相关产品推荐
相关产品推荐

