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. 步骤

    1. cmd 运行vcvarsall.bat amd64设置指定环境参数
    2. cd目录:tensorflow\contrib\cmake
    3. 创建build目录,cd build
    4. cmake命令

      1. cmake .. -G "Visual Studio 15 2017 Win64" -T host=x64 -DCMAKE_BUILD_TYPE=Release ^
      2. -Dtensorflow_VERBOSE=ON ^
      3. -Dtensorflow_ENABLE_GRPC_SUPPORT=OFF ^
      4. -Dtensorflow_BUILD_PYTHON_BINDINGS=OFF ^
      5. -Dtensorflow_BUILD_CC_EXAMPLE=OFF ^
      6. -Dtensorflow_BUILD_SHARED_LIB=ON ^
      7. -Dtensorflow_WIN_CPU_SIMD_OPTIONS=/arch:AVX
      8. #-DSWIG_EXECUTABLE=swig.exe的路径
      9. #-DPYTHON_EXECUTABLE=python.exe的路径(anaconda3路径/python.exe)
      10. #-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 中可查看,对于你拿不准的参数,保持其默认即可。

    5. 编译 
      MSBuild /p:Configuration=Release /p:Platform=x64 /verbosity:detailed tensorflow.vcxproj
      这里强调一点,Configuration定义的要与cmake时DCMAKE_BUILD_TYPE定义相同

    6. 运行测试

windows编译tensorflow c++库的更多相关文章

  1. windows 编译安卓iconv 库

    由于NDK r15后,谷歌要统一将来的设备都要支持64位,而iconv只支持32位,后续的ndk都会去除iconv的支持,所以只能在iconv的官网下载源码编译库文件使用, 下载地址:https:// ...

  2. [ZZ] 在windows上编译Mesa3d opengl32库

    在windows上编译Mesa3d opengl32库 cheungmine http://blog.csdn.net/ubuntu64fan/article/details/8061475 Mesa ...

  3. windows android studio 编译Jni动态库

    项目需要,折腾了半天搞定windows android studio环境编译Jni动态库,现记录下来. 准备安装环境: 1. android studio 下载地址是http://www.androi ...

  4. 如何在WINDOWS下编译BOOST C++库 .

    如何在WINDOWS下编译BOOST C++库 cheungmine 2008-6-25   写出来,怕自己以后忘记了,也为初学者参考.使用VC8.0和boost1.35.0.   1)下载boost ...

  5. 在Windows*上编译Tensorflow教程

    背景介绍 最简单的 Tensorflow 的安装方法是在 pip 一键式安装官方预编译好的包 pip install tensorflow 通常这种预编译的包的编译参数选择是为了最大兼容性而不是为了最 ...

  6. Windows 系统 vs2012 MinGW 编译ffmpeg 静态库

    Windows系统下 vs2012编译ffmpeg 动态库 前面已经有文章讲述,本文将讲述如果编译生成ffmpeg静态库以方便 在vs2012下调用. 准备工作:安装MinGW环境,修改ffmpeg配 ...

  7. 烂泥:centos单独编译安装gd库

    本文由秀依林枫提供友情赞助,首发于烂泥行天下. 这几天一直在弄一个商城系统,该系统的源码及数据库都已经上传并创建完毕.但是在安装该系统时,却提示缺少gd库.如下: 使用php探针查看,发现php确实没 ...

  8. 【转】编译quickfast解析库(沪深level2行情转码库)

     转自http://blog.csdn.net/hacode/article/details/7065889 编译quickfast解析库(沪深level2行情转码库) 目录(?)[-] 1 下载源代 ...

  9. mongodb c++ driver(2.53)windows编译

    编译环境: (1) 下载python2.7, 使用x86_32位,因为scons只有32位安装包可用: (2) 下载scons2.3.0,The current production release ...

随机推荐

  1. 通用Json的处理办法

    1.Json的格式: 对象{"name": "value", "name1": "value1"} 对象包含对象数组{& ...

  2. 流畅的python第九章符合Python风格的对象学习记录

    对象表示形式 每门面向对象的语言至少都有一种获取对象的字符串表示形式的标准方式.Python提供了两种方式 repr()便于开发者理解的方式返回对象的字符串表示形式 str()便于用户理解的方式返回对 ...

  3. glsl水包含倒影的实现(rtt) 【转】

    http://blog.sina.com.cn/s/blog_78ea87380101eixi.html 此文实现一个简单地水面倒影效果,通过rtt相机 获取倒影纹理, 水的基本实现方法(参考前一博文 ...

  4. pyspider介绍及安装

    一.pyspider简介 1.通过python脚本进行结构化信息的提取,follow链接调度抓取控制,实现最大的灵活性 2.通过web化的脚本编写.调试环境.web展现调度状态 3.抓取环模型成熟稳定 ...

  5. SQL Server 2008数据库备份与恢复

    在这所要说的是“分离/附加”数据库: 1.分离数据库就是将某个数据库(如student_Mis)从SQL Server数据库列表中删除,使其不再被SQL Server管理和使用,但该数据库的文件(.M ...

  6. SQL Server 2005/2008备份数据库时提示“无法打开备份设备”

    错误描述: 今天备份sqlserver 2008数据库时候,想要将备份文件放在f盘的根目录下,结果提示如下信息:备份对于服务器“服务器名”失败.(Microsoft.SqlServer.Smo)其他信 ...

  7. http_load压力测试使用

    介绍:http_load以并行复用的方式运行,用以测试web服务器的吞吐量与负载.但是它不同于大多数压力测试工具,它可以以一个单一的进程运行,一般不会把客户机搞死.还可以测试HTTPS类的网站请求. ...

  8. python 使用 BeautifulSoup 解析html

    下载地址:http://www.crummy.com/software/BeautifulSoup/bs4/download/4.3/beautifulsoup4-4.3.2.tar.gz 说明:这个 ...

  9. Gstreamer学习

    Gstreamer学习笔记----Gstreamer架构设计思想 http://blog.csdn.net/tx3344/article/details/7497434 Gstreamer到底是个啥? ...

  10. python fabric使用 http://fabric-chs.readthedocs.io/zh_CN/chs/tutorial.html

    fab -u username -p password  -H hostname -P -- cmd   或root@'hostname'  -H多个主机是引号用逗号隔开 -P异步