安装要求
存储空间≥4G
内存≥2G(可以通过swapfile创建交换分区)
参考链接
https://qengineering.eu/install-tensorflow-2.3.1-on-raspberry-64-os.html
https://blog.csdn.net/xieyipeng1998/article/details/112954045
编译步骤
1.下载TensorFlow 2.3.0源码:
wget https://github.com/tensorflow/tensorflow/archive/refs/tags/v2.3.0.tar.gz
2.解压v2.3.0.tar.gz:
tar -zxf v2.3.0.tar.gz
3.确定bazel版本:
cd tensorflow-2.3.0
cat .bazelversion
显示bazel版本为3.1.0
4.确定jdk版本:
https://docs.bazel.build/versions/3.1.0/bazel-overview.html
在Compiling Bazel from source中确定jdk的版本为1.8.0_112
5.下载安装jdk1.8.0_112:
https://www.oracle.com/java/technologies/javase/javase8-archive-downloads.html
下载对应系统的Java SE Development Kit 8u112
6.解压jdk1.8.0_112,添加环境变量:
vi ~/.bashrc
export JAVA_HOME=/path/to/jdk1.8.0_112 # 解压的目录
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
wq
source ~/.bashrc
7.安装依赖包:
sudo apt-get install build-essential gcc-7 g++-7 zip unzip make cmake wget libhdf5-dev libc-ares-dev libeigen3-dev libatlas-base-dev
8.下载bazel-3.1.0:
wget https://github.com/bazelbuild/bazel/releases/download/3.1.0/bazel-3.1.0-dist.zip
9.编译bazel:
进入bazel解压目录
env EXTRA_BAZEL_ARGS="--host_javabase=@local_jdk//:jdk" bash ./compile.sh
10.安装bazel:
cd ./output
./bazel
11.添加bazel环境变量:
vi ~/.bashrc
export PATH=/path/to/bazel-3.1.0/output:$PATH
wq
source ~/.bashrc
12.进入tensorflow-2.3.0文件夹,输入./configure,输入python环境路径(一般默认),其它选择N
13.编译libtensorflow-2.3.0:
bazel --host_jvm_args=-Xmx2048m build --config=opt --config=noaws --config=nogcp --config=nohdfs --config=nonccl --config=monolithic --config=v2 --local_cpu_resources=1 --copt=-ftree-vectorize --copt=-funsafe-math-optimizations --copt=-ftree-loop-vectorize --copt=-fomit-frame-pointer //tensorflow/tools/lib_package:libtensorflow
--host_jvm_args 限制编译过程中的使用内存
--config=noaws 不编译aws,不添加这项会报错
14.解压至系统目录:
sudo tar -C /usr/local -xzf bazel-bin/tensorflow/tools/lib_package/libtensorflow.tar.gz
15.建立软链接:
cd /usr/local
sudo ldconfig
16.清理缓存:
sudo rm -rf ~/.cache/bazel
测试
vi hello_tf.c
#include <stdio.h>
#include <tensorflow/c/c_api.h>
int main() {
printf("Hello from TensorFlow C library version %s\n", TF_Version());
return 0;
}
wq
gcc hello_tf.c -ltensorflow -o hello_tf
./hello_tf
输出: Hello from TensorFlow C library version 2.3.0