注意:如果是linux或mac os操作系统,可以参考https://www.tensorflow.org/install/install_c,直接下载对应的so库和头文件,然后跳到步骤4。如果不能使用,再从源码编译。

1.下载tensorflow源码

git clone --recursive https://github.com/tensorflow/tensorflow

假设路径为:tensorflow_repo_path

2.安装bazel

mac os可以直接brew install bazel,没法联网安装的可以下载sh文件安装,也很简单

3.编译源码,生成so库

进入tensorflow_repo_path/tensorflow文件夹,执行:

bazel build :libtensorflow.so

4.添加必要路径

最简单方法是直接把include中文件复制到/usr/local/include,把lib中文件复制到/usr/local/lib,或者修改对应的环境变量LD_LIBRARY_PATH,并在编译的时候指定       include目录。

5.编译运行测试程序

  依然是https://www.tensorflow.org/install/install_c上的内容,直接把下面代码保存成helloTF.c文件

#include <stdio.h>
#include <tensorflow/c/c_api.h> int main() {
printf(“Hello from TensorFlow C library version %s\n”, TF_Version());
return ;
}

如果使用gcc编译,除了-L和-I中添加对应的库、头文件路径,还要加上-ltensorflow,如果使用xcode这类ide,也要在ide中添加相应路径、链接库

编译成功后,把libtensorflow.so复制到可执行文件同一目录下(如果已经在/usr/local/lib或者在LD_LIBRARY_PATH中就不需要复制了),运行可执行文件,得到下面   的结果,即说明运行成功:

6.其他

tensorflow目前已经支持多种语言,并且可以编译对应的库文件,具体可以参考tensorflow_repo_path/tensorflow/BUILD文件,这里面有多个编译目标,c++的目前   也已经支持,不过相关参考资料太少,只有tensorflow_repo_path/tensorflow/cc/tutorials/example_trainer.cc一个例子。

7.参考资料

https://medium.com/jim-fleming/loading-tensorflow-graphs-via-host-languages-be10fd81876f

https://medium.com/jim-fleming/loading-a-tensorflow-graph-with-the-c-api-4caaff88463f#.z4qeoyfb0

https://www.tensorflow.org/install/install_c

编译使用tensorflow c版本动态链接库的更多相关文章

  1. centos7 源码编译安装TensorFlow CPU 版本

    一.前言 我们都知道,普通使用pip安装的TensorFlow是万金油版本,当你运行的时候,会提示你不是当前电脑中最优的版本,特别是CPU版本,没有使用指令集优化会让TensorFlow用起来更慢. ...

  2. Mac下使用源码编译安装TensorFlow CPU版本

    1.安装必要的软件 1.1.安装JDK 8 (1)JDK 8 can be downloaded from Oracle's JDK Page: http://www.oracle.com/techn ...

  3. 【转】Ubuntu 16.04安装配置TensorFlow GPU版本

    之前摸爬滚打总是各种坑,今天参考这篇文章终于解决了,甚是鸡冻\(≧▽≦)/,电脑不知道怎么的,安装不了16.04,就安装15.10再升级到16.04 requirements: Ubuntu 16.0 ...

  4. Ubuntu16.04编译安装tensorflow,2018最新血泪踩坑之后的全面总结!绝对成功!【转】

    本文转载自:https://blog.csdn.net/pzh11001/article/details/79683133 大家好,我是 (深度学习硬件DIY总群)(719577294)群主:    ...

  5. Bazel 编译工具; tensorflow 编译

    什么是bazel https://docs.bazel.build/versions/master/bazel-overview.html 使用 bazel 构建 c++ 工程 https://git ...

  6. 开源框架---通过Bazel编译使用tensorflow c++ API 记录

    开源框架---通过Bazel编译使用tensorflow c++ API 记录 tensorflow python API,在python中借用pip安装tensorflow,真的很方便,几句指令就完 ...

  7. tensorflow各个版本的CUDA以及Cudnn版本对应关系

    概述,需要注意以下几个问题: (1)NVIDIA的显卡驱动程序和CUDA完全是两个不同的概念哦!CUDA是NVIDIA推出的用于自家GPU的并行计算框架,也就是说CUDA只能在NVIDIA的GPU上运 ...

  8. Win10系统下编译GDAL1.9.2版本

    环境说明: 1.Win10企业版.64位: 2.VS2012旗舰版: 3.GDAL1.9.2 GADL编译 1.解压GDAL压缩包至F:\GDAL\gdal-1.9.2: 2.设置GDAL编译后安装目 ...

  9. tensorflow降低版本

    tensorflow降低版本: pip install tensorflow==1.2.0 查看版本: import tensorflow as tf print(tf.__version__)

随机推荐

  1. 在Notepad++中快捷选中多行

    原文: 在Notepad++中快捷选中多行 Notepad++是Windows下一款很好用的文本编辑器. 如果需要在一个文档中选中指定的若干行,常见的办法是鼠标按住拖动.这样对于少数几行的选取还可以, ...

  2. C++学习笔记44:继承与派生

    类的组合,类的继承 类的组合(汽车类,轮子类,此时可以把轮子类组合到汽车类:) 类的继承(交通工具类,汽车类,此时汽车类可以派生自交通工具类:) 组合:常用描述has a.. 继承:常用描述is a ...

  3. java中线程安全的map是ConcurrentHashMap

    原理:http://www.cnblogs.com/ITtangtang/p/3948786.html 与hashtable的区别:  http://blog.csdn.net/songfeihu08 ...

  4. Pycharm中实现多个项目共存的方式

    一.背景 在Python学习中,使用pycharm只能打开一个项目,如果想在一个pycharm中同时打开多个项目,该怎么办呢?由于学习中遇到需要打开多个项目,所以就百度查询了一下方法. 二.解决办法 ...

  5. android:碎片的使用方式

    介绍了这么多抽象的东西,也是时候应该学习一下碎片的具体用法了.你已经知道,碎 片通常都是在平板开发中才会使用的,因此我们首先要做的就是新建一个平板电脑的模拟 器.由于 4.0 系统的平板模拟器好像存在 ...

  6. 转:深入理解Java G1垃圾收集器

    本文首先简单介绍了垃圾收集的常见方式,然后再分析了G1收集器的收集原理,相比其他垃圾收集器的优势,最后给出了一些调优实践. 一,什么是垃圾回收 首先,在了解G1之前,我们需要清楚的知道,垃圾回收是什么 ...

  7. The system is running in low-graphics mode UB16

    1.Ctrl+ALT+F1 进入控制台 2.输入用户名和密码进入系统 3.输入以下命令: cd /etc/X11 sudo cp xorg.conf.failsafe xorg.conf sudo r ...

  8. NPM慢怎么办 - nrm切换资源镜像

    1. 直接配置为taobao镜像 npm config set registry https://registry.npm.taobao.org 1. 使用NRM管理镜像 npm isntall -g ...

  9. IPV4地址分类

    IPV4地址的分类 私网地址: 10.0.0.0/8                                       //A类地址 172.16.0.0/16-172.31.0.0/16  ...

  10. java证书

    默认情况下,密钥项存储在.keystore文件中,而可信的CA证书项存储在.cacerts文件中,该文件位于JRE安全目录中. 想在Linux环境下,用keytool命令检查一下一个证书,打keyto ...