开源框架---通过Bazel编译使用tensorflow c++ API 记录
开源框架---通过Bazel编译使用tensorflow c++ API 记录
tensorflow python API,在python中借用pip安装tensorflow,真的很方便,几句指令就完成了。
tensorflow c++ API,通过Bazel编译tensorflow源码方式接通C++接口,配了好几天,终于顺利结束。第一次这么配置,真的是一路踩坑,不断的解决,已经忘了如何一步步完成的。就是遇到问题就解决,奋力爬出坑。总结不顺利的几点原因:
1,版本问题。不兼容,或高或低。tf + protobuf + bazel + python + numpy +... 哪个版本都需要兼容才能顺利向下进行。重复着装里卸载,卸载了重装,匹配为止。
比如,一句简单的指令安装bazel是最新版本,与之前安装好的tf版本不对应,卸载,下载低版本的 bazel安装包,95M+ 官网本机下载好慢好慢,1~2h过去了,可能还没什么大的进展。后来通过花*币买的。其他,深印象的下载,太多了,....
2,网络问题。有的需要google源,依赖项会因为网络不稳、无法FQ、....等网络原因,出现不同的情况,速度慢还报错。有的资源下载一半,卡了...
比如,tensorflow/contrib/makefile/downloads/eigen...这个就下载了很久,一下午... 或下载的不全获有问题...
第一次,尝试这种源码方式安装tf,耗时3天+终于通了。
--------------------------------------------------------------------------------------------------------------------
下文转载,也遇到与该作者一样的问题。当时自己一顿摸索,踩了很多坑,最后不是这么简单解决的,但是都是发现缺什么想招解决的。作者解决的简便、还好。感谢!
记得,当时我应该是下载缺失的文件,单独安装,然后在CMakelists.txt中在添加路径。
--------------------------------------------------------------------------------------------------------------------
(1)、nsync_cv.h文件缺失:
这个文件一般是会在tensorflow/contrib/makefile/downloads/nsync/public这个文件夹下的,但是我这边是编译tensorflow的时候有些依赖文件没有下载到导致它缺失,解决方法是存在/tensorflow/contrib/makefile/download_dependencies.sh这个文件,执行它来下载相关的文件,相关文件会放在/home/zcx/tensorflow-r1.7/tensorflow/contrib/makefile/downloads这个文件夹下;
(2)、提示Eigen相关的问题
这个问题跟前面的类似,如果下载了相关的依赖文件之后,在/tensorflow-r1.7/tensorflow/contrib/makefile/downloads文件夹下找到eigen文件夹,进入之后执行以下指令进行eigen的编译:
mkdir build
cd build
cmake ..
make
sudo make install
(3)、提示关于protobuf版本的问题
问题如下:
这个主要是protobuf版本的问题,所以要查看bazel-genfiles/tensorflow/core/framework/types.pb.h这个文件夹中关于protobuf的版本要求,然后下载相应的版本来更新即可,这里tensorflow1.12要求是protobuf要大于等于3.6:
所以就去github上下载对应的protobuf版本。要下载源码,然后编译安装即可。
@https://blog.csdn.net/yz2zcx/article/details/83153588