Ubuntu18.04上进行Tensorflow1.14.0的源码编译

本文详细描述了如何在Ubuntu18.04环境中配置TensorFlow1.14.0,包括安装Bazel、Python依赖、处理curl包问题、numpy版本兼容性等,最终成功完成源码编译并生成whl文件。
摘要由CSDN通过智能技术生成

编译时的参考文章: https://testerhome.com/topics/35184/show_wechat

环境配置:

Ubuntu18.04 

tensorflow1.14.0 cpu版本 网址 GitHub - tensorflow/tensorflow at v1.14.0

Bazel  0.24.1(在官网可以查到1.14.0所需的bazel版本)

Python3.6.9(后面解决问题时调到了3.7,两者都可)

keras_applications==1.0.4    

Keras_preprocessing==1.0.2

wheel(没要求)

Gcc4.8

Numpy 版本1.19.5 (后面会出错,调整为<1.19.0,实际为1.18.5)

根据官方手册进行配置:

从源代码构建  |  TensorFlow (google.cn)

1.安装bazel:我们使用二进制安装

wget ​​​​​https://github.com/bazelbuild/bazel/releases/download/0.24.1/bazel-0.24.1-installer-linux-x86_64.sh

(此处网络问题,可以选择直接下载压缩包传到linux上)

chmod +x bazel-version-installer-linux-x86_64.sh(给权限)

./bazel-version-installer-linux-x86_64.sh --user(执行脚本文件)

export PATH="$PATH:$HOME/bin"(加这个指令才能识别bazel)

输入bazel看看是否安装成功

2.安装依赖包

pip install -U --user numpy wheel

pip install -U --user keras_preprocessing --no-deps(官方手册这里没有给出具体的版本)

查官方文档安装对应的版本

https://github.com/tensorflow/tensorflow/blob/r1.14/tensorflow/tools/pip_package/setup.py

3.下载Tensorflow源码  checkout到相应的tag

从 Github 上 clone 源码仓库(同上,可以直接下载完传过去)

git clone GitHub - tensorflow/tensorflow: An Open Source Machine Learning Framework for Everyone

cd 到仓库目录并 git checkout到相应 tag,比如这次是构建 v1.14.0 版本:

git checkout v1.14.0

----我是直接下载对于版本的软件包,在下载目录下进行操作

4.配置build

./configure

基本都用默认,然后选择N

5.编译

官方提供的命令:

bazel build [--config=option] //tensorflow/tools/pip_package:build_pip_package

本次使用:

bazel build --jobs=6 --verbose_failures //tensorflow/tools/pip_package:build_pip_package

jobs控制并行数量,verbose_failures查看详细报错信息

后面就是各种报错:以下是我遇到的几种,附上解决方法

BUG:

1.在编译的时候遇到curl包找不到问题:源出了错误,会有很多这种情况,拉取包的地址出现404.

解决方法:

找到正确的包地址,自己下载包到linux然后配置本地仓库

在根目录的WORKSPACE中写入

local_repository(

  name = "curl_local",

  path = "file:///home/nkn/Downloads/tensorflow-1.14.0/curl-7.60.0"

)

进行一个本地仓库的配置,避免从网上下载资源遇到404的问题

----

在前几次尝试时遇到过别的问题,也是包找不到:

对于经常出现这种问题,能否更换pypi源以免默认源重复下载失败问题?

建立/home/nkn/pip.conf  

配置

[global]
index-url = Simple Index

在bazel中添加参数开启新的下载源

bazel build --define=PIP_CONFIG_FILE=/home/user/pip.conf

有效果!!

2.PyUFuncGenericFunction类型定义不匹配导致函数调用失败,

此时环境:Numpy 版本1.19.5、Python  3.6.9

看报错和查资料发现是numpy或者python版本有问题,查看官方文档表示numpy版本没有问题,还尝试了换python3.7,还是会有同样的报错。

最后在tensorlfow社区找到了解决方法:

C++ compilation of rule '//tensorflow/python:bfloat16_lib' failed (Exit 1) tensorflow/python/lib/core/bfloat16.cc · Issue #41061 · tensorflow/tensorflow · GitHub

将numpy版本降到<1.9.0(解决了PyUFuncGenericFunction问题)

3.keras版本问题

keras_preprocessing忘记安装

更改过后:

成功编译!

6.最后生成whl文件,安装即可

./bazel-bin/tensorflow/tools/pip_package/build_pip_package /tmp/tensorflow_pkg

获得whl文件,通过pip安装即可

pip3.7 install /tmp/tensorflow_pkg/tensorflow-1.14.0-cp37-cp37m-linux_x86_64.whl

(中间遇到protobuf版本不对,降低版本到3.19.0,成功引入tensorflow)

 至此完成了tensorflow的源码编译! 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值