windows下 使用bazel 编译tensorflow 1.12 dll tensorflow动态链接库编译

一.准备工作

注:操作系统为64bit

本文使用tensorflow dll 编译tensorflow,输出dll和lib。注意tensorflow dll 从官方tensorflow Fork来的,由meteorcloudy维护。

 

工程所需软件及测试源码下载链接

bazel: https://download.csdn.net/download/sinat_19758811/11225764

其他资料:https://download.csdn.net/download/sinat_19758811/11225766

 

1. tensorflow dll 源码下载:https://github.com/meteorcloudy/tensorflow.git

 

2. msys2安装:http://www.msys2.org/(选择最新版下载(选择msys2-x86_64-*.exe),苯本人将其安装至C盘)

配置msys2:

  • 将目录C:\msys64 加入系统环境变量path
  • 打开C:\msys64中的mingw64.exe 输入

pacman -S patch, unzip, grep

 

3. bazel下载:bazel 0.22版本 https://github.com/bazelbuild/bazel/releases/download/0.22.0/bazel-0.22.0-windows-x86_64.exe

bazel配置:

将bazel-0.22.0-windows-x86_64.exe改名为 bazel.exe放入 C:\msys64中,并新建环境变量:BAZEL_SH,BAZEL_VC ,BAZEL_VS

windows下 使用bazel 编译tensorflow 1.12 dll tensorflow动态链接库编译_第1张图片

 

二.编译

 

1. 运行配置文件configure.py

 

cd进入 tensorflow-tensorflow_dll文件夹中,

运行 python configure.py

回车即为选择默认

本文仅编译CPU,若编译GPU版本 按照提示配置好路径

 

2. bazel编译

 

下面的命令直接会编译dll和lib 以及需要的头文件

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

 

可能遇到的错误:

ERROR: error loading package '': Encountered error while reading extension file 'swift/repositories.bzl': no such package '@build_bazel_rules_swift//swift':

windows下 使用bazel 编译tensorflow 1.12 dll tensorflow动态链接库编译_第2张图片

 

解决方法:

打开tensorflow源码目录里的 WORKSPACE, 在49行后加入

 

http_archive(

name = "build_bazel_rules_swift",

strip_prefix = "rules_swift-0.6.0",

urls = ["https://github.com/bazelbuild/rules_swift/archive/0.6.0.tar.gz"],

)

如下图:

windows下 使用bazel 编译tensorflow 1.12 dll tensorflow动态链接库编译_第3张图片

 

重新运行:

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

 

3. 编译完成

编译完成后,可找到libtensorflow.tar.gz

 

tensorflow-tensorflow_dll\bazel-out\x64_windows-opt\bin\tensorflow\tools\lib_package

libtensorflow.tar.gz

 

解压后即可得到 include 和tensorflow.dll 和 tensorflow.lib

目录结构

windows下 使用bazel 编译tensorflow 1.12 dll tensorflow动态链接库编译_第4张图片

 

三.测试

新建VS2015工程, 选择x64平台

注意配置工程的 包含目录、库目录、附加依赖项

#include  
#include  
int main() 
{ 
    printf("TF version is: %s\n", TF_Version()); 
    return 0; 
}

 

 

 

 

你可能感兴趣的:(深度学习)