[写真] Kunpeng916-ARM64アーキテクチャのソースコードgccコンパイルの完全な記録

[写真] Kunpeng916-ARM64アーキテクチャのソースコードgccコンパイルの完全な記録


参照:Kunpengソフトウェアスタック公式ドキュメント


1.準備段階

  • システムアーキテクチャを表示する
[root@pc-deeplearning-1 ~]# hostnamectl 
   Static hostname: pc-deeplearning-1
         Icon name: computer-vm
           Chassis: vm
        Machine ID: 65a539173aca43bca524c9829d298907
           Boot ID: 0c07a5693c01472ba997bd83cb43f05b
    Virtualization: kvm
  Operating System: CentOS Linux 7 (AltArch)
       CPE OS Name: cpe:/o:centos:centos:7
            Kernel: Linux 4.14.0-115.el7a.0.1.aarch64
      Architecture: arm64
[root@pc-deeplearning-1 ~]# 
  • システムバージョンを表示
[root@pc-deeplearning-1 ~]# cat /etc/redhat-release 
CentOS Linux release 7.6.1810 (AltArch) 
[root@pc-deeplearning-1 ~]#
  • 仮想マシンのcpuコアの数を表示する
[root@pc-deeplearning-1 lib64]# lscpu
Architecture:          aarch64
Byte Order:            Little Endian
CPU(s):                32
On-line CPU(s) list:   0-31
Thread(s) per core:    1
Core(s) per socket:    16
Socket(s):             2
NUMA node(s):          1
Model:                 2
BogoMIPS:              100.00
NUMA node0 CPU(s):     0-31
Flags:                 fp asimd evtstrm aes pmull sha1 sha2 crc32 cpuid
[root@pc-deeplearning-1 lib64]#
  • 仮想マシンのメモリ容量を表示する
[root@pc-deeplearning-1 lib64]# free -h
              total        used        free      shared  buff/cache   available
Mem:            31G        659M         12G        668M         19G         24G
Swap:            0B          0B          0B
[root@pc-deeplearning-1 lib64]#

2.cmakeをインストールします

2.1cmakeがインストールされているかどうかを確認します
rpm -qa |grep cmake

インストールされていない場合は、インストールする必要があります。

2.2cmakeをインストールする
[root@pc-deeplearning-1 src]# yum repolist
[root@pc-deeplearning-1 src]# yum provides cmake
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
 * base: mirrors.huaweicloud.com
 * extras: mirrors.huaweicloud.com
 * updates: mirrors.huaweicloud.com
cmake-2.8.12.2-2.el7.aarch64 : Cross-platform make system
Repo        : base



[root@pc-deeplearning-1 src]# 
[root@pc-deeplearning-1 src]# yum -y install cmake
Complete!
[root@pc-deeplearning-1 src]#
2.3cmakeバージョンを表示
[root@pc-deeplearning-1 src]# cmake -version
cmake version 2.8.12.2
[root@pc-deeplearning-1 src]# 

3.依存関係パッケージをインストールします

3.1次の依存関係をインストールします
yum -y install bison* ncurses*
yum -y install bzip2 wget
3.2依存インストールパッケージが正常にインストールされているかどうかを確認します
[root@pc-deeplearning-1 src]# rpm -qa | grep bison*
libisofs-1.2.8-4.el7.aarch64
bison-3.0.4-2.el7.aarch64
[root@pc-deeplearning-1 src]# 
[root@pc-deeplearning-1 src]# rpm -qa | grep ncurses*
ncurses-libs-5.9-14.20130511.el7_4.aarch64
ncurses-base-5.9-14.20130511.el7_4.noarch
ncurses-5.9-14.20130511.el7_4.aarch64
[root@pc-deeplearning-1 src]# 
[root@pc-deeplearning-1 src]# rpm -qa | grep bzip2
bzip2-1.0.6-13.el7.aarch64
bzip2-libs-1.0.6-13.el7.aarch64
[root@pc-deeplearning-1 src]# 
[root@pc-deeplearning-1 src]# rpm -qa | grep wget
wget-1.14-18.el7.aarch64
[root@pc-deeplearning-1 src]#

4. gccのダウンロード、コンパイル、インストール

4.1gccのバージョンを確認する
[root@pc-deeplearning-1 src]# gcc --version
gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-36)
Copyright (C) 2015 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

[root@pc-deeplearning-1 src]# 

バージョンが低すぎるため、更新されたバージョンをダウンロードする必要があります

4.2ダウンロードgcc7.3
[root@pc-deeplearning-1 software]# wget https://mirrors.tuna.tsinghua.edu.cn/gnu/gcc/gcc-7.3.0/gcc-7.3.0.tar.gz

2020-11-15 17:49:07 (440 KB/s) - ‘gcc-7.3.0.tar.gz’ saved [112201917/112201917]

[root@pc-deeplearning-1 software]#
4.3gcc7.3インストールパッケージを解凍します
[root@pc-deeplearning-1 software]# tar -zxf gcc-7.3.0.tar.gz
[root@pc-deeplearning-1 software]#
4.4「gcc-7.3.0」ディレクトリで、gcc依存関係パッケージがダウンロードおよびインストールされているかどうかを確認します
[root@pc-deeplearning-1 software]# cd gcc-7.3.0/
[root@pc-deeplearning-1 gcc-7.3.0]# ./contrib/download_prerequisites 

gmp-6.1.0.tar.bz2: OK
mpfr-3.1.4.tar.bz2: OK
mpc-1.0.3.tar.gz: OK
isl-0.16.1.tar.bz2: OK
All prerequisites downloaded successfully.
[root@pc-deeplearning-1 gcc-7.3.0]# 

isl、gmp、mpc、mpfrがダウンロードされていることがわかります

4.5gccをコンパイルします。

「-j」パラメータはマルチコアCPUを使用してコンパイルを高速化できます。この操作では、32コアCPUが使用されるため、ここに「-j32」を示します。

(注:最初は、Kunpengソフトウェアスタックの公式ドキュメントに従って操作され、-j16を作成しましたが、速度は非常に遅くなりました。偉大な神の導きを聞いた後、Ctrl-Cが中断し、-j32を作成した後、速度は非常に速かったです)

4.5.1 CPUコアの数は、次のコマンドで照会できます。
[root@pc-deeplearning-1 gcc-7.3.0]# cat /proc/cpuinfo| grep "processor"| wc -l
32
[root@pc-deeplearning-1 gcc-7.3.0]#
4.5.2現在のディレクトリを表示する
[root@pc-deeplearning-1 gcc-7.3.0]# pwd
/opt/software/gcc-7.3.0
[root@pc-deeplearning-1 gcc-7.3.0]#
4.5.3gccコンパイルディレクトリを作成する
[root@pc-deeplearning-1 gcc-7.3.0]# mkdir gcc-build-7.3.0
[root@pc-deeplearning-1 gcc-7.3.0]# cd gcc-build-7.3.0
[root@pc-deeplearning-1 gcc-build-7.3.0]# pwd
/opt/software/gcc-7.3.0/gcc-build-7.3.0
[root@pc-deeplearning-1 gcc-build-7.3.0]# 
[root@pc-deeplearning-1 gcc-build-7.3.0]# ../configure --enable-checking=release --enable-language=c,c++ --disable-multilib --prefix=/usr
4.5.4 32vcpuのため、make-j32を使用してコンパイルして実行します
[root@pc-deeplearning-1 gcc-build-7.3.0]# make -j32
4.5.5インストールの実行
[root@pc-deeplearning-1 gcc-build-7.3.0]# make install
4.5.6「libstdc ++。so」が「/ usr / lib64」ディレクトリにあることを確認します
[root@pc-deeplearning-1 gcc-build-7.3.0]# cd /usr/lib64

「libstdc ++。so」の場所を照会します

[root@pc-deeplearning-1 lib64]# ll |grep libstdc++.so
lrwxrwxrwx.  1 root root       19 Nov 15 19:48 libstdc++.so -> libstdc++.so.6.0.24
lrwxrwxrwx.  1 root root       19 Nov 15 19:48 libstdc++.so.6 -> libstdc++.so.6.0.24
-rwxr-xr-x.  1 root root  1057320 Oct 30  2018 libstdc++.so.6.0.19
-rwxr-xr-x.  1 root root 11844176 Nov 15 19:48 libstdc++.so.6.0.24
-rw-r--r--.  1 root root     2385 Nov 15 19:48 libstdc++.so.6.0.24-gdb.py
lrwxrwxrwx.  1 root root       19 Mar 20  2020 libstdc++.so.6.old -> libstdc++.so.6.0.19
[root@pc-deeplearning-1 lib64]# 

ソフト接続が存在することを確認してください

[root@pc-deeplearning-1 lib64]# ll |grep libstdc++.so.6.0.24
lrwxrwxrwx.  1 root root       19 Nov 15 19:48 libstdc++.so -> libstdc++.so.6.0.24
lrwxrwxrwx.  1 root root       19 Nov 15 19:48 libstdc++.so.6 -> libstdc++.so.6.0.24
-rwxr-xr-x.  1 root root 11844176 Nov 15 19:48 libstdc++.so.6.0.24
-rw-r--r--.  1 root root     2385 Nov 15 19:48 libstdc++.so.6.0.24-gdb.py
[root@pc-deeplearning-1 lib64]#

5.gccバージョンを確認します

[root@pc-deeplearning-1 lib64]# gcc -v
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/libexec/gcc/aarch64-unknown-linux-gnu/7.3.0/lto-wrapper
Target: aarch64-unknown-linux-gnu
Configured with: ../configure --enable-checking=release --enable-language=c,c++ --disable-multilib --prefix=/usr
Thread model: posix
gcc version 7.3.0 (GCC) 
[root@pc-deeplearning-1 lib64]#

これでこの記事は終わりです。

連絡先:

WeChatパブリックアカウント:
ここに写真の説明を挿入
WeChat:
ここに写真の説明を挿入

この記事がお役に立てば幸いです。「いいね」をクリックしてから行ってください。
もっとエキサイティングな、お楽しみに!
このブロガーをフォローすることを歓迎します!

おすすめ

転載: blog.csdn.net/frdevolcqzyxynjds/article/details/109710860