windows编译tensorflow c++库
1. 准备
- windows 10系统、3.6GHz cpu、16G 内存
- visual studio 2017 or 2015
- 下载安装git
- 下载安装cmake
- 下载安装swigwin 如果不需要python bindings,可以跳过
- clone tensorflow
- 切换tensorflow到要进行编译的git tag
- 修改tensorflow/contrib/cmake/CMakeLists.txt
if (tensorflow_OPTIMIZE_FOR_NATIVE_ARCH)
include(CheckCXXCompilerFlag)
CHECK_CXX_COMPILER_FLAG("-march=native" COMPILER_OPT_ARCH_NATIVE_SUPPORTED)
if (COMPILER_OPT_ARCH_NATIVE_SUPPORTED)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -march=native")
# 添加下面这部分
else()
CHECK_CXX_COMPILER_FLAG("/arch:AVX" COMPILER_OPT_ARCH_AVX_SUPPORTED)
if (COMPILER_OPT_ARCH_AVX_SUPPORTED)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /arch:AVX")
endif()
# end of 添加下面这部分
endif()
endif()
2. 步骤
- cmd 运行vcvarsall.bat amd64设置指定环境参数
- cd目录:tensorflow\contrib\cmake
- 创建build目录,cd build
cmake命令
cmake .. -G "Visual Studio 15 2017 Win64" -T host=x64 -DCMAKE_BUILD_TYPE=Release ^-Dtensorflow_VERBOSE=ON ^-Dtensorflow_ENABLE_GRPC_SUPPORT=OFF ^-Dtensorflow_BUILD_PYTHON_BINDINGS=OFF ^-Dtensorflow_BUILD_CC_EXAMPLE=OFF ^-Dtensorflow_BUILD_SHARED_LIB=ON ^-Dtensorflow_WIN_CPU_SIMD_OPTIONS=/arch:AVX#-DSWIG_EXECUTABLE=swig.exe的路径#-DPYTHON_EXECUTABLE=python.exe的路径(anaconda3路径/python.exe)#-DPYTHON_LIBRARIES=python35.lib的路径(anaconda3路径/libs/python35.lib)
上面的命令说明:
-G 指定生成目标版本。命令行输入cmake -G,可以查看可选的版本列表。
-T host=64 是网上很多教程忽略的一点,我之前也用VS2017编译过,因为没有指定-T host=64,导致使用了32位的编译器,出现fatal error C1060: "编译器的堆空间不足"的错误。
tensorflow_VERBOSE 编译时输出具体信息,设为ON些许降低编译速度。
tensorflow_ENABLE_GRPC_SUPPORT GRPC支持,如果你有服务器/客户端的业务需求,或者跨语言GRPC使用需求的话,选择ON。
tensorflow_BUILD_PYTHON_BINDINGS 需要编译python包的话选择ON。
tensorflow_BUILD_CC_EXAMPLE 编译测试代码。
tensorflow_BUILD_SHARED_LIB 编译共享库。
tensorflow_WIN_CPU_SIMD_OPTIONS=/arch:AVX2 选择AVX还是AVX2,取决于你的CPU是否支持该指令集。
tensorflow_ENABLE_GPU 编译是否使用GPU。
tensorflow_OPTIMIZE_FOR_NATIVE_ARCH可设为OFF也可以不设置,会自动判断。
其他可选参数在 tensorflow\tensorflow\contrib\cmake\CMakeLists.txt 中可查看,对于你拿不准的参数,保持其默认即可。编译
MSBuild /p:Configuration=Release /p:Platform=x64 /verbosity:detailed tensorflow.vcxproj
这里强调一点,Configuration定义的要与cmake时DCMAKE_BUILD_TYPE定义相同- 运行测试
windows编译tensorflow c++库的更多相关文章
- windows 编译安卓iconv 库
由于NDK r15后,谷歌要统一将来的设备都要支持64位,而iconv只支持32位,后续的ndk都会去除iconv的支持,所以只能在iconv的官网下载源码编译库文件使用, 下载地址:https:// ...
- [ZZ] 在windows上编译Mesa3d opengl32库
在windows上编译Mesa3d opengl32库 cheungmine http://blog.csdn.net/ubuntu64fan/article/details/8061475 Mesa ...
- windows android studio 编译Jni动态库
项目需要,折腾了半天搞定windows android studio环境编译Jni动态库,现记录下来. 准备安装环境: 1. android studio 下载地址是http://www.androi ...
- 如何在WINDOWS下编译BOOST C++库 .
如何在WINDOWS下编译BOOST C++库 cheungmine 2008-6-25 写出来,怕自己以后忘记了,也为初学者参考.使用VC8.0和boost1.35.0. 1)下载boost ...
- 在Windows*上编译Tensorflow教程
背景介绍 最简单的 Tensorflow 的安装方法是在 pip 一键式安装官方预编译好的包 pip install tensorflow 通常这种预编译的包的编译参数选择是为了最大兼容性而不是为了最 ...
- Windows 系统 vs2012 MinGW 编译ffmpeg 静态库
Windows系统下 vs2012编译ffmpeg 动态库 前面已经有文章讲述,本文将讲述如果编译生成ffmpeg静态库以方便 在vs2012下调用. 准备工作:安装MinGW环境,修改ffmpeg配 ...
- 烂泥:centos单独编译安装gd库
本文由秀依林枫提供友情赞助,首发于烂泥行天下. 这几天一直在弄一个商城系统,该系统的源码及数据库都已经上传并创建完毕.但是在安装该系统时,却提示缺少gd库.如下: 使用php探针查看,发现php确实没 ...
- 【转】编译quickfast解析库(沪深level2行情转码库)
转自http://blog.csdn.net/hacode/article/details/7065889 编译quickfast解析库(沪深level2行情转码库) 目录(?)[-] 1 下载源代 ...
- mongodb c++ driver(2.53)windows编译
编译环境: (1) 下载python2.7, 使用x86_32位,因为scons只有32位安装包可用: (2) 下载scons2.3.0,The current production release ...
随机推荐
- C语言中setjmp与longjmp学习笔记
C语言中setjmp与longjmp学习笔记 一.基础介绍 头文件:#include<setjmp.h> 原型: int setjmp(jmp_buf envbuf) ,然而longjm ...
- vim的批量列编辑
使用快捷键:control+v进入状态“VISUALBLOCK”,然后使用方向键向下选择,选择多行,向右选择,选择多列,使用快捷键d删除所选. 再次进入VISUAL BLOCK状态,选择多行多列, 使 ...
- IOS开发博客学习
M了个J :http://www.cnblogs.com/mjios/tag/objective-c/ http://www.cnblogs.com/tianjian/p/3358602.html ...
- 十三.spring-boot使用spring-boot-thymeleaf
thymeleaf 比如freemaker的要高,thymeleaf是一个支持html原型的自然引擎,它在html 标签增加额外的属性来达到模板+数据的展示方式,由于 浏览器解释html时,忽略未定义 ...
- [转]Getting started with SSIS - Part 10: Event Handling and Logging
本文转自:http://beyondrelational.com/modules/12/tutorials/24/tutorials/9686/getting-started-with-ssis-pa ...
- iOS:tableView表头下拉放大的效果
现在很多app设置了这样的效果,如何实现这一效果呢,其实只需要简单的两个方法,那么我们直接上代码 首先我们在storyBoard里拖一个tableView并设置Navigation,接下来我们在tab ...
- Delphi中Frame的使用方法(2)
Frame在写代码时和一般组件有什么不同呢?比如(1)中的客户信息的frame,如果想重写客户编辑按钮的click事件,会发生什么呢: procedure TBusOnSiteManager.Fram ...
- sftp子系统申请已拒绝 请确保ssh连接的sftp子系统设置有效
一.sftp子系统申请已拒绝,请确保ssh连接的sftp子系统设置有效 1.修改配置文件 [root@nulige ~]# vi /etc/ssh/sshd_config # override def ...
- 过滤器chain.doFilter(request,response)的含义
过滤器的生命周期一般都要经过下面三个阶段: 初始化: 当容器第一次加载该过滤器时,init() 方法将被调用.该类在这个方法中包含了一个指向 Filter Config 对象的引用.我们的过滤器实际上 ...
- [Python爬虫] 之十五:Selenium +phantomjs根据微信公众号抓取微信文章
借助搜索微信搜索引擎进行抓取 抓取过程 1.首先在搜狗的微信搜索页面测试一下,这样能够让我们的思路更加清晰 在搜索引擎上使用微信公众号英文名进行“搜公众号”操作(因为公众号英文名是公众号唯一的,而中文 ...