window10+msys2+bazel + vs2015 编译 tensorflow 1.12.0 cpu 版本 生成lib和dll

准备工作:

       ps:本人电脑为64位操作系统

       安装 vs2015 64bit 去i tell you 可以下载

       下载msys2 http://www.msys2.org/

       安装后在系统环境变量的path中添加路径D:\msys64和D:\msys64\usr\bin,本人装在D盘,操作如下图所示:

window10+msys2+bazel + vs2015 编译 tensorflow 1.12.0 cpu 版本 生成lib和dll_第1张图片

      打开mingw64.exe 输入:

pacman -Syuu

     可能会出现如下错误:无法从repo.msys2.org:Operation too slow.Less than 1 bytes/sec transferred the last 10 seconds

     解决方法:将清华镜像的路径 加入到  D:\msys64\ect\pacman.d\ 目录下的文件里

     

/etc/pacman.d/mirrorlist.mingw32
Server = https://mirrors.tuna.tsinghua.edu.cn/msys2/mingw/i686
/etc/pacman.d/mirrorlist.mingw64
Server = https://mirrors.tuna.tsinghua.edu.cn/msys2/mingw/x86_64
/etc/pacman.d/mirrorlist.msys
Server = https://mirrors.tuna.tsinghua.edu.cn/msys2/msys/$arch

    以上清华镜像路径写在其他镜像路径的上方。

    接着在mingw64.exe中输入:

pacman -S patch, unzip, grep

    下载安装bazel,现在版本为:bazel-0.22.0-window-x86_64.exe,网址https://github.com/bazelbuild/bazel/releases,可能国内下载速度很慢,推荐使用https://www.newbe.pro/Mirrors/Mirrors-Bazel/

    下载完成后,将bazel-0.22.0-window-x86_64.exe 改为bazel.exe, 然后放在D:msys64目录下

    接着配置环境变量,新建环境变量BAZEL_SH, BAZEL_VC, BAZEL_VS,按下图所示:

window10+msys2+bazel + vs2015 编译 tensorflow 1.12.0 cpu 版本 生成lib和dll_第2张图片

   注意:有的人的环境是C:\Program Files(x86) Microsoft Visual Studio 14.0\VC 和 C:\Program Files(x86) Microsoft Visual Studio 12.0 请按照自己的路径添加

   下载 tensorflow 1.12.0 :https://pypi.org/project/tensorflow/1.12.0/

    安装 python 3.6.5


编译:

       打开Windows PowerShell进入tensorflow1.12.0包的文件夹运行:

python configure.py

可能会报不能读取 .rc的文件这时候只要降低bazel的版本就可以了, 我改成了0.15.0的版本,运行结果如下图所示:

window10+msys2+bazel + vs2015 编译 tensorflow 1.12.0 cpu 版本 生成lib和dll_第3张图片

下一步运行:

bazel build --config=opt //tensorflow/tools/lib_package:libtensorflow

就可以在D:\tensorflow-1.12.0\bazel-out\x64_windows-opt\bin\tensorflow\tools\lib_package\中找到libtensorflow.tar.gz,解压后得到include和tensorflow.dll、tensorflow.lib。目录结构如图所示:

window10+msys2+bazel + vs2015 编译 tensorflow 1.12.0 cpu 版本 生成lib和dll_第4张图片

在运行上述的命令可能会出现下图所示丢失包的错误:

window10+msys2+bazel + vs2015 编译 tensorflow 1.12.0 cpu 版本 生成lib和dll_第5张图片

这个原因是运行时一些依赖包没有下载下来,如果你有个速度很快的VPN是不会出现这种问题的。

********************************************************************************************

这里时我编译好的include和tensorflow.dll、tensorflow.lib 

下载链接:https://download.csdn.net/download/goodman_lqifei/12305014

********************************************************************************************


现在进行示例展示:

     好多网上的实列依然采用的是没有编译的tensorflow来写的,我认为是不合理的。下面给出参考示例:

     首先配置环境,在vs2015中创建空项目

    将include的添加到包含目录中:

window10+msys2+bazel + vs2015 编译 tensorflow 1.12.0 cpu 版本 生成lib和dll_第6张图片

将lib添加到库目录和链接器的输入中的附加依赖项中:

window10+msys2+bazel + vs2015 编译 tensorflow 1.12.0 cpu 版本 生成lib和dll_第7张图片

window10+msys2+bazel + vs2015 编译 tensorflow 1.12.0 cpu 版本 生成lib和dll_第8张图片

  最后将dll文件放在D:\project\Project3\x64\Release\目录下:

PS:这里使用的pb文件是在keras框架模型转成的。

代码:

这里是测试一个样本的示例,最终的运行结果如下图所示,其中代码还有些瑕疵,以后慢慢打磨。

window10+msys2+bazel + vs2015 编译 tensorflow 1.12.0 cpu 版本 生成lib和dll_第9张图片

如果有什么错误,请在评论区留言哦,如代码有不清楚的地方,也请在评论区留言,一起讨论!

你可能感兴趣的:(C++,tensorflow)