TensorFlow C++ 编译札记

TensorFlow C++ 编译札记

  • 硬件环境
  • TF-CPP 库编译
    • Bazelisk
    • 编译方法
    • 其他注意事项
  • 参考

最近因为工作需要,要将很久都没有碰过的 TF 框架重新用起来,而且还需要使用 C++ 端口做一些工程开发工作。鉴于这些工作实在是太多坑,不同版本的软件相互间又不兼容。如果考虑到要在有墙的情况下 debug 简直雪上加霜。因此决定记录自己在安装和使用过程中碰到的问题。

这篇文章会持续更新,大家可以根据更新时间来确认这篇文章的内容是否还使用,我想一般3-6个月内问题不大。网络上很多 17/18 的文章可以看,但就不要尽信了。

硬件环境

MacOS 10.15
Tensorflow 1.14

TF-CPP 库编译

Bazelisk

TF-CPP 库的编译需要使用 bazel 进行,但由于不同TF版本对bazel的需求不一样,因此我强烈建议通过 bazelisk 来安装 bazel。安装方法很简单:

brew install bazelisk

不能使用 brew 或者其他平台的用户可以直接到网站上下载
安装完成后,根据直接的使用需要确定 bazel version,然后通过设置环境变量的方式告诉 bazelisk 你要使用的版本,

export USE_BAZEL_VERSION=x.x.x

执行上述命令后,只要你再执行一次 bazelisk 的任何命令(包括 -h),bazelisk 就会帮你完成下载和安装,十分方便

编译方法

bazel 准备好后,编译方式就比较简单了,先在github上下载tensorflow源码,执行./configure先配置项目,然后按照这篇博客里写的利用bazel编译动态链接库,编译命令如下

C版本:

bazel build :libtensorflow.so

C++版本:

bazel build :libtensorflow_cc.so

编译成功后,在bazel-bin/tensorflow/目录下会出现libtensorflow.so/libtensorflow_cc.so文件

其他注意事项

  1. 编译过程中若出现错误 bazel error: “http_archive” is not defined时,需要将 bazel 版本降低到 0.19.0,因为此错误出现在 bazel > 0.20.0。
  2. 安装前强烈建议根据需要从此页面中确认需要使用的依赖版本
  3. bazel 0.15.0 存在 JVMs matching version “1.7+” not found 的问题,但是并不影响 TF 的编译
  4. 假若在编译过程中出现 bazel build error: //external:icu erro downloading ...,详细解决方法请见此页面,通过更改 tensorflow/third_party/icu/workspace.bzl 中的 sha 为86b85fbf1b251d7a658de86ce5a0c8f34151027cc60b01e1b76f167379acf181 即可解决

参考

https://www.cnblogs.com/hrlnw/p/7383951.html

你可能感兴趣的:(TFboys,c++,人工智能,linux,tensorflow)