系统:Ubuntu16.04
TensorFlow1.4 cpu版本
g++: 5.4.0
bazel: 0.5.4
参考:https://blog.csdn.net/zwx1995zwx/article/details/79064064
1,下载TensorFlow源代码git clone https://github.com/tensorflow/tensorflow.git cd tensorflow git checkout r1.4 # 切换到所要编译的版本分支
2,安装bazel
bazel的版本太高太低都会有问题,可以查看tensorflow/tensorflow/docs_src/install/install_sources.md文件中的版本需求。tf1.4版本对应的bazel版本是0.5.4。
安装bazel0.5.4:https://docs.bazel.build/versions/master/install-ubuntu.html#install-with-installer-ubuntu。推荐用installing using binary installer安装
3,编译Tensorflow
3.1,进入tensorflow文件夹./configure
按照提示都选n,参考https://blog.csdn.net/zwx1995zwx/article/details/79064064
3.2,bazel编译bazel build --config=opt //tensorflow:libtensorflow_cc.so // 无显卡,cpu版本 bazel build --config=opt --config=cuda //tensorflow:libtensorflow_cc.so // 有显卡
4,其他依赖
在tensorflow/contrib/makefile下,执行build_all_linux.sh文件,成功后会出现一个gen文件夹。
如果tensorflow/contrib/makefile下没有downloads文件夹,则回到tensorflow文件夹下,执行:./tensorflow/contrib/makefile/download_dependencies.sh
如需Eigen库,则进入tensorflow/contrib/makefile/downloads/eigen,执行:mkdir build cd build cmake .. make sudo make install
安装完毕后,在usr/local/include目录下会出现eigen3文件夹。
5,整理头文件和so库
两个so库在bazel-bin/tensorflow文件夹下libtensorflow_cc.so 和 libtensorflow_framework.so。
将4个头文件文件夹整理出来:
/tensorflow (只需tensorflow目录下tensorflow和third_party两个文件夹)
/tensorflow/tensorflow/contrib/makefile/gen/protobuf/include6,测试
参考https://blog.csdn.net/zwx1995zwx/article/details/79064064
在tensorflow-c-mnist中新建头文件include文件夹和so库文件夹lib,将第5步中的so库和include文件夹分别copy到这两个新建的lib和include文件夹下。
新建CMakeLists.txt文件cmake_minimum_required (VERSION 2.8.8) project (tf_example) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g -std=c++11 -W") link_directories(./lib) include_directories( include/tensorflow include/bazel-genfiles include/nsync-public include/protobuf-inc /usr/local/include/eigen3 ) add_executable(tf_test tf.cpp) target_link_libraries(tf_test tensorflow_cc tensorflow_framework)
然后编译运行cd build cmake .. make ./tf_test digit.jpg