用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
其中这个最好按照默认路径安装,否则编译时没过几秒钟,可能会出现下面的问题:
/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