windows10环境下使用bazel编译lib tensorflow_cc.so C++(CPU版)

2023-11-23 01:00

本文主要是介绍windows10环境下使用bazel编译lib tensorflow_cc.so C++(CPU版),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

因工作需要,需要在win10环境下将TensorFlow在C++的环境下进行编译。本教程记录本人在安装环境下遇到的问题,供有相同或者类似的小伙伴借鉴。如有问题,欢迎指正

1. 安装列表

在安装前需要准备
Mysys2
bazel-0.19.1
TensorFlow-1.13.0-rc2
Visual C++2015(需要更新至update2及以上版本

以上资源我上传至百度云盘链接: [https://pan.baidu.com/s/1_5CB2Q1WROLoPlLR-UHSMQ]
提取码:3bru(如有过期,请与我联系,可以单独发送)

2.安装顺序

2.1本机安装Mysys2

msys2是可以在windows下搭建gcc开发环境的集成平台,非常好用。
win10环境安装可以参考,亲试可行,需要注意的是在安装完成后,可以将资源换成国内 https://mirror.tuna.tsinghua.edu.cn/help/msys2/ 这样下载起来方便许多
常用pacman 命令列表如下:

pacman -Syu: 升级系统及所有已经安装的软件。
pacman -S 软件名: 安装软件。也可以同时安装多个包,只需以空格分隔包名即可。
pacman -Rs 软件名: 删除软件,同时删除本机上只有该软件依赖的软件。
pacman -Ru 软件名: 删除软件,同时删除不再被任何软件所需要的依赖。
pacman -Ssq 关键字: 在仓库中搜索含关键字的软件包,并用简洁方式显示。
pacman -Qs 关键字: 搜索已安装的软件包。
pacman -Qi 软件名: 查看某个软件包信息,显示软件简介,构架,依赖,大小等详细信息。
pacman -Sg: 列出软件仓库上所有的软件包组。
pacman -Sg 软件包组: 查看某软件包组所包含的所有软件包。
pacman -Sc:清理未安装的包文件,包文件位于 /var/cache/pacman/pkg/ 目录。
pacman -Scc:清理所有的缓存文件。

2.2安装Bazel

可以在将下载后的Bazel 进行解压,获取指定的exe 文件,将该文件放入之前配置好的msys2的环境变量中即可(保证msys2环境变量配置成功的条件下)
测试:
打开cmd,输入命令bazel version ,出现下图则安装成功
在这里插入图片描述

2.3 安装Visual Studio C++2015 社区版 (需要更新至update2及以上

  1. 解压下载后的文件如下
    在这里插入图片描述

  2. 双击vs_xxxxx.exe 开始安装操作,出现等待界面,需要等待一会。
    在这里插入图片描述

  3. 初始化安装程序,这个操作也需要等待一会在这里插入图片描述

  4. 选择安装位置和安装方式。
    在这里插入图片描述

  5. 选择要安装的组件。
    因为我是C++开发,只会用到C++相关的组件,所以这里我只选择了"Visual C++",个人可根据实际情况进行选择
    在这里插入图片描述

  6. 选择完之后点击下一步,弹出下图,点击“安装”按钮开始安装。
    在这里插入图片描述

  7. 开始安装,安装的时间有点长 40分钟左右,和卸载时间差不多。
    在这里插入图片描述

  8. 安装完成,有时需要重启电脑那就按照提示重启一下,若没有提示,则直接启动VS(如有部分安装失败,请检查一下原因,本人安装过程中,1.遇到过一次C盘存储不足的情况,2.编译的时候存在 相关文件不存在的情况,需要在 电脑中 找到安装程序,进行修复
    在这里插入图片描述

  9. 首次使用VS还需要简单的设置,主要是开发环境和主题风格。
    启动VS2015,提示登录,若有账户点击“登录”,若没有选择"登录"按钮下的“以后再说”,如下图
    在这里插入图片描述

  10. 选择环境配置。
    在这里插入图片描述
    我选择了Visual C++,之后下面的主题颜色,选择自己喜欢的就行,这个只影响编码器的视觉效果。

  11. 选择完成之后,点击“启动 Visual Studio(S)”按钮启动,需要几分钟的准备过程。
    在这里插入图片描述

  12. 如使用起来存在问题,可以尝试本机修复,本次耗时和安装耗时相近,本人是通过这种方式 解决了文件在编译过程中 VCVARSALL.BAT, cl.exe, link.exe, lib.exe, ml64.exe 以上文件缺失的问题
    在这里插入图片描述

  13. 因本次在编译过程中提示需要VS2015 update2及以上版本。所以本次直接在安装时 直接进行安装更新即可在这里插入图片描述
    以上操作完成,基础环境安装完成,即可进行软件编译相关操作了

3.配置环境变量

BAZEL_SH C:\msys64\usr\bin\bash.exe
BAZEL_VC C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC

在这里插入图片描述

4.软件编译

  1. 进入tensorflow根目录下
    在这里插入图片描述
    打开powerShell 或者cmd 进入到以上文件夹路径(管理员权限进来最好)

python ./configure.py
在这里插入图片描述

  1. 果断暴躁编译
    bazel build --config=opt --config=monolithic //tensorflow:libtensorflow_cc.so
    如果编译成功,则会在下面文件夹里面出现libtensorflow_cc.so
    在这里插入图片描述
    主要借鉴博客地址为:https://blog.csdn.net/qq_37268614/article/details/86440425?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.channel_param&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.channel_param

这篇关于windows10环境下使用bazel编译lib tensorflow_cc.so C++(CPU版)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/414185

相关文章

C语言中联合体union的使用

本文编辑整理自: http://bbs.chinaunix.net/forum.php?mod=viewthread&tid=179471 一、前言 “联合体”(union)与“结构体”(struct)有一些相似之处。但两者有本质上的不同。在结构体中,各成员有各自的内存空间, 一个结构变量的总长度是各成员长度之和。而在“联合”中,各成员共享一段内存空间, 一个联合变量

关于C++中的虚拟继承的一些总结(虚拟继承,覆盖,派生,隐藏)

1.为什么要引入虚拟继承 虚拟继承是多重继承中特有的概念。虚拟基类是为解决多重继承而出现的。如:类D继承自类B1、B2,而类B1、B2都继承自类A,因此在类D中两次出现类A中的变量和函数。为了节省内存空间,可以将B1、B2对A的继承定义为虚拟继承,而A就成了虚拟基类。实现的代码如下: class A class B1:public virtual A; class B2:pu

C++对象布局及多态实现探索之内存布局(整理的很多链接)

本文通过观察对象的内存布局,跟踪函数调用的汇编代码。分析了C++对象内存的布局情况,虚函数的执行方式,以及虚继承,等等 文章链接:http://dev.yesky.com/254/2191254.shtml      论C/C++函数间动态内存的传递 (2005-07-30)   当你涉及到C/C++的核心编程的时候,你会无止境地与内存管理打交道。 文章链接:http://dev.yesky

ESP32 esp-idf esp-adf环境安装及.a库创建与编译

简介 ESP32 功能丰富的 Wi-Fi & 蓝牙 MCU, 适用于多样的物联网应用。使用freertos操作系统。 ESP-IDF 官方物联网开发框架。 ESP-ADF 官方音频开发框架。 文档参照 https://espressif-docs.readthedocs-hosted.com/projects/esp-adf/zh-cn/latest/get-started/index

C++的模板(八):子系统

平常所见的大部分模板代码,模板所传的参数类型,到了模板里面,或实例化为对象,或嵌入模板内部结构中,或在模板内又派生了子类。不管怎样,最终他们在模板内,直接或间接,都实例化成对象了。 但这不是唯一的用法。试想一下。如果在模板内限制调用参数类型的构造函数会发生什么?参数类的对象在模板内无法构造。他们只能从模板的成员函数传入。模板不保存这些对象或者只保存他们的指针。因为构造函数被分离,这些指针在模板外

Tolua使用笔记(上)

目录   1.准备工作 2.运行例子 01.HelloWorld:在C#中,创建和销毁Lua虚拟机 和 简单调用。 02.ScriptsFromFile:在C#中,对一个lua文件的执行调用 03.CallLuaFunction:在C#中,对lua函数的操作 04.AccessingLuaVariables:在C#中,对lua变量的操作 05.LuaCoroutine:在Lua中,

C++工程编译链接错误汇总VisualStudio

目录 一些小的知识点 make工具 可以使用windows下的事件查看器崩溃的地方 dumpbin工具查看dll是32位还是64位的 _MSC_VER .cc 和.cpp 【VC++目录中的包含目录】 vs 【C/C++常规中的附加包含目录】——头文件所在目录如何怎么添加,添加了以后搜索头文件就会到这些个路径下搜索了 include<> 和 include"" WinMain 和

UnrealScriptIDE调试环境部署

先安装vs2010   再安装VSIsoShell.exe, 下载地址 https://pan.baidu.com/s/10kPNUuDGTbWXbz7Nos-1WA       fd3t   最后安装unside,下载地址 https://archive.codeplex.com/?p=uside  安装中间有一步选择Binary文件夹要选对路径。   安装好以后,启动 UDKDe

Vim使用基础篇

本文内容大部分来自 vimtutor,自带的教程的总结。在终端输入vimtutor 即可进入教程。 先总结一下,然后再分别介绍正常模式,插入模式,和可视模式三种模式下的命令。 目录 看完以后的汇总 1.正常模式(Normal模式) 1.移动光标 2.删除 3.【:】输入符 4.撤销 5.替换 6.重复命令【. ; ,】 7.复制粘贴 8.缩进 2.插入模式 INSERT

C/C++的编译和链接过程

目录 从源文件生成可执行文件(书中第2章) 1.Preprocessing预处理——预处理器cpp 2.Compilation编译——编译器cll ps:vs中优化选项设置 3.Assembly汇编——汇编器as ps:vs中汇编输出文件设置 4.Linking链接——链接器ld 符号 模块,库 链接过程——链接器 链接过程 1.简单链接的例子 2.链接过程 3.地址和