Tensorflow 本地编译

本文详细介绍了如何在CentOS环境下使用Bazel编译TensorFlow源码,并提供了C++调用TensorFlow的完整步骤与示例代码。从配置Bazel环境、安装依赖项,到编译TensorFlow并生成动态库,再到C++项目中引入TensorFlow,全程实战指导。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

编译流程

安装bazel (CentOS)

方法1

  1. vim /etc/yum.repos.d/bazel.repo
  2. 拷贝下面内容
[vbatts-bazel]
name=Copr repo for bazel owned by vbatts
baseurl=https://copr-be.cloud.fedoraproject.org/results/vbatts/bazel/epel-7-$basearch/
type=rpm-md
skip_if_unavailable=True
gpgcheck=1
gpgkey=https://copr-be.cloud.fedoraproject.org/results/vbatts/bazel/pubkey.gpg
repo_gpgcheck=0
enabled=1
enabled_metadata=1
  1. yum install bazel

方法2
到 https://github.com/bazelbuild/bazel/releases 下载对应的安装文件 bazel-0.28.1-installer-linux-x86_64.sh
在这里插入图片描述

编译

编译前查看机器支持的cpu指令集: gcc -march=native -Q --help=target|grep march
参考 https://tensorflow.google.cn/install/source 安装依赖项

  1. git clone -b r1.14 https://github.com/tensorflow/tensorflow.git
  2. cd tensorflow
  3. ./configure
  4. bazel build --config=monolithic //tensorflow:libtensorflow_cc.so 或者 bazel build --config=opt //tensorflow:libtensorflow_cc.so 或者 bazel build -c opt --copt=-mavx --copt=-mavx2 --copt=-mfma --copt=-msse4.2 //tensorflow:libtensorflow_cc.so
  5. sudo apt-get install autoconfig automake
  6. cd tensorflow/contrib/makefile
  7. ./build_all_linux.sh

c++调用

  1. c++需要加入include_directories的头文件:
    ./tensorflow/tensorflow/
    ./tensorflow/third_party/
    ./tensorflow/tensorflow/contrib/makefile/gen/protobuf/include/
    ./tensorflow/tensorflow/contrib/makefile/downloads/eigen/
    ./tensorflow/tensorflow/contrib/makefile/downloads/absl/
    ./tensorflow/bazel-genfiles
    ./tensorflow/tensorflow/contrib/makefile/gen/proto
    ./tensorflow/tensorflow/contrib/makefile/gen/host_obj/tensorflow/core
  2. 需要链接的so
    ./tensorflow/bazel-bin/tensorflow/libtensorflow_cc.so
  3. cpp调用
#include <stdio.h>
#include <iostream>
#include <tensorflow/core/platform/env.h>
#include <tensorflow/core/public/session.h>
using namespace tensorflow;
using namespace std;
int main(int argc, char const *argv[])
{        
    std::cout << "status" << std::endl;
    Session* session;    
    Status status = NewSession(SessionOptions(), &session);    
    if (!status.ok()) 
    {
        std::cout << status.ToString() << "\n";
        return 0;
    }
    return 0;
}
  1. 根目录CMAKELIST.txt
cmake_minimum_required(VERSION 2.8)

project( tf_example )

IF(NOT CMAKE_BUILD_TYPE)
   SET(CMAKE_BUILD_TYPE Release)
ENDIF()

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g -std=c++11 -W")

include_directories(
                   ${PROJECT_SOURCE_DIR}/include 
                   ${PROJECT_SOURCE_DIR}/include/include 
                   ${PROJECT_SOURCE_DIR}/include/tensorflow/ 
                   ${PROJECT_SOURCE_DIR}/include/bazel-genfiles/ 
                   ${PROJECT_SOURCE_DIR}/include/absl/
                   ${PROJECT_SOURCE_DIR}/include/eigen/
                  )

link_directories(${PROJECT_SOURCE_DIR}/3rdparty)

set(CODE_DIRS ${PROJECT_SOURCE_DIR}/src)

set(SOURCE_DIR ${CODE_DIRS}/lib)
set(TEST_DIR ${CODE_DIRS}/test)

set(EXECUTABLE_OUTPUT_PATH ${PROJECT_BINARY_DIR}/bin)
set(LIBRARY_OUTPUT_PATH ${PROJECT_BINARY_DIR}/lib)

add_subdirectory(${TEST_DIR} ${EXECUTABLE_OUTPUT_PATH})

项目git地址

https://github.com/zqp2009happy/tensorflow_c

一些有用的资料

官方手册 https://tensorflow.google.cn/guide/
cpp调用教程项目 https://github.com/rockingdingo/tensorflow-tutorial
官方模型 https://github.com/tensorflow/models
karas手册 https://keras.io/getting-started/functional-api-guide/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值