在麒麟上玩人工智能之001 - 麒麟服务器V10版本上编译安装 Bazel

[[囧]]

在麒麟服务器V10版本上,居然没有 Tensorflow, 那么我们只能自己动手来编译一个了。

在官网溜达了一圈,谷歌最新的是 Tensorflow2.0 版本,这个版本需要用到 Bazel 编译构建工具来编译它的源代码。

Bazel 这个工具又新又小众,仓库里也是查无此人,看来也只能重新编译一个了。[[嘻嘻]]
 

先介绍一下这货。

Bazel 是一个类似 Make, Maven 和 Gradle 一样的构建和测试工具。
Bazel 使用易读的、高级别的构建语言,支持多语言和多个平台,尤其是咱们马上要用到的 C++语言了。

接下来让我们开始吧:

 

一、下载 Bazel

首先我们直接打开 Bazel 的github仓库,在 releases 标签页下进行下载。
https://github.com/bazelbuild/bazel/releases/tag/3.7.1

下载bazel-3.7.1-dist.zip 到 opt下的bazel-3.7.1-dist 目录
你也可以使用wget 命令进行下载。
[[鄙视]]注意:不要下载src, 一定要下载dist, src是开发版本。
然后我们使用 unzip 命令进行解压。
[[鄙视]]注意:unzip会直接把文件解压到当前目录下,造成文件很多,建议先建好文件夹再到文件夹里面进行解压。

 

二、安装OpenJDK

openjdk默认安装的是jre环境,这里需要我们手动安装一下openjdk 的 java 版本。
rpm -qa | grep openjdk 

这里我们选择用 dnf 来安装。dnf算是yum的升级版本,em, centos就是这样,天天换工具和名字,老的还得兼容,最后每个工具都 Double 一下[[失望]]

sudo dnf install java-1.80-openjdk-devel -y

 

三. 编译 Bazel 的启动版本

Bazel 是典型的自己编译自己的程序,编译方式跟 go 差不多。问题来了,如果我是第一次使用,没有Bazel肿么办?
这个时候,就需要我们编译出一个Bazel的最开始启动版本了。
利用下面的命令,我们可以直接编译出Bazel

cd /opt/bazel-3.7.1-dist
env EXTRA_BAZEL_ARGS="--host_javabase=@local_jdk//:jdk" bash ./compile.sh
编译完的二进制可执行文件在output目录下,这次我们的文件名称全称为
/opt/bazel-3.71-dist/output/bazel 
这是一个不依赖其它文件的自包含文件可执行文件,你可以把它拷贝到任何地方。推荐拷贝到/usr/local/bin 目录下,这样可以直接执行。
[root@172-17-119-105 bazel-3.71-dist]# cp /opt/bazel-3.71-dist/output/bazel /usr/local/bin

[root@172-17-119-105 bazel-3.71-dist]# bazel Extracting Bazel installation...
后面编译Tensorflow的时候发现 bazel 3.7.1 过高了,重新下载0.29.1版本进行重新编译,同时需要把原来的bazel 换到另外的位置。
You have bazel 3.7.1- (@non-git) installed.
Please downgrade your bazel installation to version 0.29.1 or lower to build TensorFlow! To downgrade: download the installer for the old version (from https://github.com/bazelbuild/bazel/releases) then run the installer.

 

四、直接运行

命令行下输入 bazel 即可
这次我们下了新版本重新编译
新版本位置:
/opt/tensorflow/bazel-0.29.1/output/bazel

 

作者:聂芳华

你可能感兴趣的:(银河麒麟服务器V10,AI&大数据)