Tensorflow C++动态库编译

本机配置环境

Ubuntu 16.04
Python 2.7
CUDA 9.0
cuDNN 7
Bazel 0.17.2
TensorFlow 1.10
protobuf 3.5.0
GPU: RTX2080

安装bazel

  • 安装依赖

    sudo apt-get install pkg-config zip g++ zlib1g-dev unzip python

  • 下载bazel

    下载bazel--installer-linux-x86_64.sh,官方github链接link

  • 编译bazel

    chmod +x bazel--installer-linux-x86_64.sh
    ./bazel--installer-linux-x86_64.sh --user

  • 配置环境
    将下面的命令行添加到~/.bashrc中

    export PATH=“ P A T H : PATH: PATH:HOME/bin”

编译Protobuf源码

  • 下载并解压缩 protobuf-cpp-3.5.0.tar.gz文件 link
  • 进入解压后的文件夹

    cd protobuf-3.5.0
    ./autogen.sh ##下载自github的代码需要执行此行来生成configure文件
    ./configure
    make
    make check
    sudo make install
    sudo ldconfig
    protoc --version

编译Tensorflow

  • 下载tensorflow源码

    git clone git@github.com:tensorflow/tensorflow.git

  • 配置环境
    • 选择版本

      git checkout r1.10

    • 进入tensorflow文件夹

      cd tensorflow

    • tensorflow配置

      ./configure

    • 具体的配置如下
      在这里插入图片描述
      在这里插入图片描述
  • 进入 tensorflow 目录进行编译,编译成功后,在 /bazel-bin/tensorflow 目录下会出现 libtensorflow_cc.so 文件

    C版本: bazel build :libtensorflow.so
    C++版本: bazel build :libtensorflow_cc.so

  • 编译其他依赖
    • 进入 tensorflow/contrib/makefile 目录下,运行 ./build_all_linux.sh,成功后会出现一个gen文件夹
    • 若出现如下错误 /autogen.sh: 4: autoreconf: not found ,安装相应依赖即可 sudo apt-get install autoconf automake libtool

测试编译结果

  • Cmaklist.txt

    cmake_minimum_required(VERSION 2.8)
    project(demo)
    set(CMAKE_CXX_STANDARD 11)
    set(TENSORFLOW_DIR /home/hp/tensorflow)
    include_directories($ {TENSORFLOW_DIR})
    include_directories($ {TENSORFLOW_DIR}/tensorflow/contrib/makefile/gen/proto)
    include_directories($ {TENSORFLOW_DIR}/tensorflow/contrib/makefile/gen/protobuf-host/include)
    include_directories($ {TENSORFLOW_DIR}/tensorflow/contrib/makefile/downloads/eigen)
    include_directories($ {TENSORFLOW_DIR}/tensorflow/contrib/makefile/downloads/nsync/public)
    include_directories($ {TENSORFLOW_DIR}/tensorflow/contrib/makefile/downloads/absl)
    link_directories($ {TENSORFLOW_DIR}/tensorflow/contrib/makefile/gen/lib)
    link_directories($ {TENSORFLOW_DIR}/tensorflow/contrib/makefile/gen/protobuf-host/lib)
    link_directories($ {TENSORFLOW_DIR}/tensorflow/contrib/makefile/downloads/nsync/builds/default.linux.c++11)
    link_directories(${TENSORFLOW_DIR}/bazel-bin/tensorflow)
    add_executable(demo test.cpp)
    target_link_libraries(demo tensorflow_cc tensorflow_framework)

  • test.cpp

    #include <tensorflow/core/platform/env.h>
    #include <tensorflow/core/public/session.h>
    #include < iostream>
    using namespace std;
    using namespace tensorflow;
    int main() {
    Session* session;
    Status status = NewSession(SessionOptions(), &session);
    if (!status.ok()) {
    cout << status.ToString() << “\n”;
    return 1;
    }
    cout << “Session successfully created.\n”;
    return 0;
    }

  • 测试tensorflow C++编译
    • 编译命令

      cmake .
      make
      ./test

    • 测试结果
      在这里插入图片描述
  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 10
    评论
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值