windows+bazel+tensorflow-r1.12(GPU)编译生成dll与lib

用cmake编译一直不成功,所以转到bazel编译。

正确编译,并已进行工程实验转到:https://blog.csdn.net/qq_35975447/article/details/91986142

这里需要非常感谢的博客与博主:

https://www.tensorflow.org/install/source_windows?hl=zh-cn

https://blog.csdn.net/sinat_19758811/article/details/90896639

https://blog.csdn.net/heiheiya/article/details/88946716

1.安装 MSYS2

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

其中这个最好按照默认路径安装,否则编译时没过几秒钟,可能会出现下面的问题:

/usr/bin/env: 'python': No such file or directory windows

 所有安装步骤都默认一路next下去,安装完成以后,需要配置:

  • 将目录C:\msys64\usr\bin 加入系统环境变量path
  • 打开cmd.exe,输入一下命令(有时可能安装不了,多试几次好了):
pacman -S patch, unzip, grep

2.安装 Bazel

在github下载Bazel,https://github.com/bazelbuild/bazel/releases,这里我下载的bazel-0.26.1-windows-x86_64.exe

将下载好的 bazel-0.26.1-windows-x86_64.exe复制到C:\msys64下,更名为bazel.exe。

配置bazel:新建环境变量:BAZEL_SH,BAZEL_VC ,BAZEL_VS

3.安装 vs2015

4.下载tensorflow-r1.12

6.配置编译系统

python3 ./configure.py

7.编译

编译cpu版本生成lib和dll:

bazel build --config=opt --copt=-nvcc_options=disable-warnings 
 //tensorflow/tools/lib_package:libtensorflow

编译gpu版本生成lib和dll:

bazel build --config=opt --config=cuda --copt=-nvcc_options=disable-warnings //tensorflow/tools/lib_package:libtensorflow

我使用的上面这个命令,编译成功:

├─include
│  └─tensorflow
│      └─c
│          │  c_api.h
│          │  c_api_experimental.h
│          │  LICENSE
│          │
│          └─eager
│                  c_api.h
│
└─lib
        libtensorflow.so

https://github.com/tensorflow/tensorflow/issues/7258#issuecomment-450802749 

 将目录下的文件复制到lib目录下,然后修改然后修改名称,就可以得到dll与lib了:

但是经过下面测试发现,还是需要libtensorflow.so,在windows vs2015下创建工程,配置环境变量:

#include <stdio.h> 
#include <tensorflow/c/c_api.h> 
int main() 
{ 
    printf("TF version is: %s\n", TF_Version()); 
    return 0; 
}

这里我将生成的libtensorflow文件夹都复制到了其他目录下 

D:\Users\libtensorflow\lib;D:\Users\libtensorflow\include;

D:\Users\libtensorflow\lib

tensorflow.lib

这里不论是Debug x64还是Release x64按照上面的步骤配置好环境,就可以得到下面的结果了

否则会出现找不到libtensorflow.so,所以这里做三处修改

  • 将bazel-bin\tensorflow\liblibtensorflow.so.ifso  --->  更名为tensorflow.lib,复制到bazel-bin\tensorflow\lib目录下;
  • bazel-bin\tensorflow\lib\libtensorlfow.so  --->  复制bazel-bin\tensorflow\lib\tensorlfow.dll
  • 将bazel-bin\tensorflow\lib\ 具体目录加到系统环境变量中
├─include
│  └─tensorflow
│      └─c
│          │  c_api.h
│          │  c_api_experimental.h
│          │  LICENSE
│          │
│          └─eager
│                  c_api.h
│
└─lib
        libtensorflow.so
        tensorflow.dll
        tensorflow.lib

编译cpu版本生成whl:

bazel build --config=opt  --copt=-nvcc_options=disable-warnings //tensorflow/tools/pip_package:build_pip_package
bazel-bin\tensorflow\tools\pip_package\build_pip_package C:/tmp/tensorflow_pkg

编译gpu版本生成whl:

bazel build --config=opt --config=cuda --copt=-nvcc_options=disable-warnings //tensorflow/tools/pip_package:build_pip_package
bazel-bin\tensorflow\tools\pip_package\build_pip_package C:/tmp/tensorflow_pkg

 自此尝试过很多种方法,编译过很多次的dll与lib终于出来了。

备注:其中这篇博文使用下面版本的tensorflow1.12直接编译,不需要修改,直接得到dll与lib。

https://github.com/meteorcloudy/tensorflow/tree/tensorflow_dll

发布了24 篇原创文章 · 获赞 11 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/qq_35975447/article/details/91636625