tensorflow 编译c++ 可执行文件

用tensorflow的api完成的程序,在部署的时候,可能会遇到需要隐藏代码的情况,通过调用c的api编写tensorflow程序,然后再编译成.out文件可完成这一功能。


可以直接参考官方文档:https://www.tensorflow.org/install/install_c



因为我这边已经按照前面的博客从源码安装了tensorflow(如源码安装tensorflow之一:cntlm代理配置和tensorflow源码安装之二:bazel安装、源码编译),故这里的步骤和官网的步骤不太一致。



确保已经从源码安装tensorflow成功之后,主要有如下几个步骤:



1、进入到tensorflow安装包目录下,tensorflow-master/tensorflow

执行如下命令:


bazel build :libtensorflow.so
生成c对应的so库,如果需要生成c++对应的so库,则需要执行如下的命令:
bazel build :libtensorflow_cc.so

2、生成so库之后,需要准备相应的lib和include文件

在/usr/local/include中新建目录 tf

sudo mkdir tf
进入到tensorflow-master目录下,把相关文件复制到/usr/local/include/tf中

cp -r bazel-genfiles /usr/local/include/tf
cp -r tensorflow /usr/local/include/tf
cp -r third_party /usr/local/include/tf
再把so库复制到/usr/local/lib目录中

cp bazel-bin/tensorflow/libtensorflow.so /usr/local/lib
cp bazel-bin/tensorflow/libtensorflow_framework.so /usr/local/lib

这里可能需要执行命令 sudo ldconfig

3、验证是否可编译成功
随便在一个目录下,新建helloTF.c文件,填入代码如下:

#include <stdio.h>
#include <tf/tensorflow/c/c_api.h>

int main(){
    printf("Hello from Tensorflow C library version %s\n",TF_version());
    return 0;
}


然后开始用gcc编译程序

gcc -I /usr/local/include/ -L /usr/local/lib/ helloTF.c -ltensorflow
编译成功后,就可以直接运行.out程序

./a.out

在编译的时候,碰到过一个问题

这个问题,在于,复制文件的时候,没有把libtensorflow_framework.so复制到/usr/local/lib中。


从这一步来看,已经可以正常的运行起来了。那么如何才能在其它机器上跑起来呢?


4、移植到其它机器运行


4.1 首先把libtensorflow.so和libtensorflow_framework.so复制到其它机器上的/usr/local/lib中
4.2 执行命令,sudo ldconfig
4.3 复制a.out文件到其它机器上
4.4 运行./a.out





参考链接:

http://blog.csdn.net/hjimce/article/details/51899683
https://www.tensorflow.org/install/install_c
https://www.cnblogs.com/hrlnw/p/7383951.html
https://www.cnblogs.com/hrlnw/p/7007648.html
http://blog.csdn.net/rockingdingo/article/details/75452711

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值