- システムメッセージ
建築 | CPU | オペレーティング・システム |
---|---|---|
arm64 | クンペン920 | UOS1021 |
- 大まかなプロセス
最後に、armアーキテクチャ
libtensorflow.so.1.15.0
とlibtensorflow_framework.so.1.15.0
ダウンロードリンクの下でコンパイルされます(GPUコンパイラバージョンではなく、CPUのコンパイルバージョンのみ)
1.バージョン確認
1.1最初に、今回コンパイルされたtensorflowのバージョンを決定します:tensorflow-1.15.0
- プロジェクトの要件を見て、使用する
tensorflow
バージョンを決定します。1.15.0
tensorflow-1.15.0
ソースコードをダウンロードしてください
1.2次に、必要なbazelバージョンを決定します:bazel-0.25.0
-
tensorflowソースコードには、次の
configure.py
ファイルがあります。
-
configure.py
ファイルを開いて検索しますbazel
:
-
あなたが見ることができる
tensorflow-1.15.0
のバージョンbazel
にバージョン間、我々は選択したバージョンを。0.24.1
0.26.1
bazel-0.25.0
2.基本的なツールのダウンロード
2.1 jdk
2.1.1バージョンの確認
-
公式のbazelドキュメントを確認し、次を選択します
bazel-0.25.0
。
-
クリック
installation overview
:
-
クリック
compile from source
:
-
彼が使用したjdkバージョン要件とjdkバージョン番号を確認できます。
jdk1.8.0_112
2.1.2ダウンロードしてインストール:jdk1.8.0_112
- ダウンロード:jdkヒストリカルバージョンリンク
- お気に入りのディレクトリに解凍します
2.1.3jdk環境変数
- 編集:
$ sudo vim /etc/profile # 编辑文件
# 在最后添加以下三行
export JAVA_HOME=/home/baixin/Desktop/java/jdk1.8.0_112
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
# 使其生效
$ source /etc/profile
- コンピュータを再起動するのが最善
2.2gccおよびg ++
- 2つのバージョンは一貫している必要があります。そうでない場合、エラーが報告される可能性があります。
gcc: error trying to exec 'cc1plus': execvp: No such file or directory
2.2.12つのバージョン番号を決定する
$ gcc -v # 查看gcc版本
$ g++ -v # 查看g++版本
2.2.2アップグレードとダウングレード
2.3 Nginx
2.3.1 Nginxの概要(特にBaiduによる)
- Nginx(engine x)は、高性能のHTTPおよびリバースプロキシWebサーバーです。
- 効果は、ブラウザに入力したものと似ています:https://linux265.com/static/images/upload/featured-nginx.jpg
2.3.2なぜNginxを使用するのですか?
- 後でテンソルフローをコンパイルするときは、多くの依存関係パッケージをダウンロードする必要がありますが、Ruijieクライアントはarmアーキテクチャでクラッシュし、Kunpengマシンにはワイヤレスネットワークカードがなく、依存関係パッケージをダウンロードするとエラーが報告される可能性があります。
- 次に、bazelはコンパイルされるたびに最後のダウンロードのキャッシュをクリアするため、ダウンロードしたファイルをキャッシュディレクトリに直接配置することはできません。
- したがって、Nginxを使用してファイルサーバーをローカルに構築し、bazelにファイルをローカルにダウンロードさせることしかできません。
2.3.3Nginxをインストールします
- コマンドライン入力:
$ sudo apt-get update
$ sudo apt-get install nginx
- ソフトウェアソースにNginxがないことを確認するメッセージが表示された場合は、最初にソースを変更します。
# 添加公匙
$ sudo apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 40976EAF437D05B5 3B4FE6ACC0B21F32
# 清除软件仓库缓存
$ sudo apt-get clean
# 修改软件源:/etc/apt/source.list文件
deb http://mirrors.aliyun.com/ubuntu-ports/ xenial main
deb-src http://mirrors.aliyun.com/ubuntu-ports/ xenial main
deb http://mirrors.aliyun.com/ubuntu-ports/ xenial-updates main
deb-src http://mirrors.aliyun.com/ubuntu-ports/ xenial-updates main
deb http://mirrors.aliyun.com/ubuntu-ports/ xenial universe
deb-src http://mirrors.aliyun.com/ubuntu-ports/ xenial universe
deb http://mirrors.aliyun.com/ubuntu-ports/ xenial-updates universe
deb-src http://mirrors.aliyun.com/ubuntu-ports/ xenial-updates universe
deb http://mirrors.aliyun.com/ubuntu-ports/ xenial-security main
deb-src http://mirrors.aliyun.com/ubuntu-ports/ xenial-security main
deb http://mirrors.aliyun.com/ubuntu-ports/ xenial-security universe
deb-src http://mirrors.aliyun.com/ubuntu-ports/ xenial-security universe
# 重新安装
$ sudo apt-get update
$ sudo apt-get install nginx
- 上記のリファレンスリンク:Linuxarm64アーキテクチャ変更ソフトウェアソース
2.3.4構成
- Nginx構成ファイルの
nginx.conf
パスを見つけます:
$ sudo find / -name "nginx.conf"
nginx.conf
構成ファイルを編集します(ファイルの内容は類似しています。最初にサーバーモジュールを見つけてから、次の3つの項目を編集します)。- ポート(デフォルトのポート80との競合を防ぐために、ポートを大きくするように変更します):7140
- 文字セット:charset UTF-8;
- ローカルファイルを保存する場所:root "/ home / baixin / Desktop / file"
# 修改后的部分文件内容:
......
server {
listen 7140; # 设置端口
server_name localhost;
charset UTF-8; # 设置字符集
#access_log logs/host.access.log main;
location / {
root "/home/baixin/Desktop/file"; # 本地文件存放位置,根据自己的情况而定
index index.html index.htm;
}
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
......
2.3.5検証
- ブラウザに直接入力するだけです
http://127.0.0.1:7140/img.jpg
。(もちろん、/home/baixin/Desktop/file
画像ファイルはパスに含まれている必要があります)
3.ベーゼルをコンパイルします
3.1環境(以前にインストールしたものをインストールする必要はありません)
- 公式ウェブサイトチュートリアル:
sudo apt-get install build-essential openjdk-8-jdk python zip unzip
3.2ソースパッケージのダウンロード
-
githubプロジェクトアドレス
-
bazel-0.25.0
バージョンを選択し、リリースパッケージアドレスを入力します。 -
注:ソースコードからbazelをコンパイルする
bazel-0.25.0-dist.zip
には、bazelSource code
パッケージではなく、パッケージをダウンロードします。
3.3コンパイルベーゼル
- 入力
bazel
解凍ディレクトリを、コマンドを入力します。
env EXTRA_BAZEL_ARGS="--host_javabase=@local_jdk//:jdk" bash ./compile.sh # 其实这段代码来自官网
-
直接入力する
./compile.sh
と、エラーが報告される場合があります:jdkが見つかりません -
バゼルをインストールします
$ cd ./output
$ ./bazel
3.4bazel環境変数を構成する
- コンパイルさ
bazel
れたものが/home/baixin/DeskTop/bazel/output
ディレクトリにあると仮定して~/.bashrc
、ファイルの最後に次を追加します。
export PATH=/home/baixin/DeskTop/bazel/output:$PATH
- 新しい環境変数を有効にする
$ source ~/.bashrc
4.テンソルフローをバゼルでコンパイルします
4.1通常の考え方
- tensorflowソースコードディレクトリにコマンドを入力し、プロンプトに従って関連する設定を行います。
$ ./configure
- Bazelコンパイルコマンド:
$ bazel build //tensorflow:libtensorflow.so # 我用的这个可以编译成功,可以多搜些命令,试下。
4.2しかし。。。
- コンパイルプロセスでは多くの依存パッケージがダウンロードされ、ダウンロードに失敗する可能性があります
- エラーが発生すると、ダウンロードに失敗したファイルと、URLの依存関係に応じて、ディレクトリのタイトル
1.3.2
にファイルのURLが表示されます。/home/baixin/Desktop/file
4.3 TensorFlowソースコードでURLを見つけて変更するにはどうすればよいですか?
4.3.1変更は次の図のようになります。
- その中で、赤いボックスは新しく追加されたコンテンツです(注:追加の順序も誤って報告される場合があります):
- リファレンスブログ
4.3.2特定の検索方法
-
まず、探しているファイルはすべて
.bzl
サフィックスです。さらにWORKSPACE
、ソースルートディレクトリ内のファイルも可能です。 -
次に、エラーメッセージを注意深く読んでください。テンソルフローソースコード内のファイルが表示されます。このファイルを検索して、依存パッケージのURLアドレスを見つけることができるかどうかを確認してください。
-
最後に、依存パッケージの名前に応じて、ソースコードをチェック
./tensorflow/core
して./third_party
するには、以下を参照行方不明の依存関係と同じ名前のフォルダがある場合、入力し、ために表情.bzl
を持つファイル接尾辞はい。 -
上記の参照:これは非常に便利なブログであり、私を大いに助けてくれました。パッケージのダウンロードに失敗したときにこの記事を読むことができます
5.ダウンロードリンク
-
抽出コード:2hb1