在linux18.04上配置tensorflow1.14的C++接口

本文详细记录了在Linux 18.04上配置TensorFlow 1.14 C++环境的步骤,包括下载源码、编译、解决缺失的`libtensorflow_framework.so`问题,以及如何编写CMakeLists.txt文件来编译可执行文件。还介绍了如何使用C++ API接口进行模型预测,涉及将模型冻结为.pb文件并进行预测。
摘要由CSDN通过智能技术生成

随便吐槽下:

前段时间因为项目的原因在ARM上配置了tensorflow以及tensorflow lite的ARM NN SDK环境(有兴趣的朋友可以去看看传送门),因为最近板子还没有到,就想先试一下在pc上配置一下linux上的tensirflow的C++环境。这边文章主要记录一下在配置tensorflow的C++环境时的步骤以及踩到的坑。总的来说,之所以去编译,就是为了以后方便在自己做的东西上面使用google的tensorflow库。找了一圈发现大致有两种方法,一种是把项目放到tensorflow源码中,然后利用bazel编译,这样编译时间较长,而且编译出来的二进制文件较大。另一种是将tensorflow的静态库编译出来拿到项目中使用,这种方法易于管理。这篇文章主要讲的就是第二种方法。


准备工作:

首先下载tensorflow的源码(这里有个坑,建议不要直接克隆master分支,这里我也不知道为啥,下载了master分支里面没有contrib文件夹,而下载指定版本就有,希望有懂的大佬可以指导一下):

# 下载指定的版本1.14.0 
git clone -b v1.14.0 https://github.com/tensorflow/tensorflow.git
# 进入tensorflow文件夹
cd tensorflow
# 配置tensorflow
./configure

这里的./configure可以配置也可以不选择配置,如果需要配置的话可以参照官网的选项说明进行配置,我这里没有选择配置。接下来需要安装对应版本的bazel和gcc,查看官网推荐来选择对应版本,这里我贴出了linux的版本要求:

我用的是tensorflow-1.14.0,选择的是python2.7、GCC 4.8、Bazel 0.24.1。

因为linux18.04默认版本为gcc-7,所以需要降低版本,降低gcc版本的方法推荐使用命令:

# 直接apt安装需要的版本
sudo apt-get install gcc-version
# 设置链接组优先级
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.8 10
# 使用配置命令可以手动选择
sudo update-alternatives --config gcc

bazel安装推荐官网下载.sh文件直接安装,安装方法——>传送门

然后安装一下python和tensorflow的一些依赖:

# python组件(如果是python3则改成后面那种)
sudo apt install python-dev python-pip(python3-dev python3-pip)
# tensorflow依赖项
pip install -U --user pip six numpy wheel setuptools mock
pip install -U --user keras_applications --no-deps
pip install -U --user keras_preprocessing --no-deps

这里建议再安装一下future:pip install future

不然后面用bazel编译时会报错:importError:No module named builtins


编译源码:

使用下面这个命令需要你懂的网速,不然下载一些依赖项时,会非常的慢。

# 编译源码(如果要调用cuda,加命令--config=cuda)
bazel build //tensorflow:libtensorflow_cc.so

按理说运行下面这个命令就会在bazel-bin/tensorflow文件夹下生成libtensorflow_cc.so和libtensorflow_framework.so,但是我在运行之后并没有看到libtensorflow_framework.so这个库,只有libtensorflow_framework.so.1,这里我纠结了很久,一直没有找到解决方法,在其他博客上看到的方法不知道是版本问题或者是因为时间问题,在我这里都不起作用,然后我尝试了一下:

bazel build //tensorflow:libtensorflow_framework.so

没想到一下成功了,我也不知道是侥幸还是什么版本更新的问题&#x

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值