「インストール - GCC」の版間の差分

ナビゲーションに移動 検索に移動
編集の要約なし
編集の要約なし
編集の要約なし
6行目: 6行目:
<br><br>
<br><br>


== 依存関係のライブラリのインストール ==
== GCCのインストール (ソースコードからインストール) ==
==== 依存関係のライブラリのインストール ====
まず、システムが最新であることを確認する。<br>
まず、システムが最新であることを確認する。<br>
  # RHEL
  # RHEL
15行目: 16行目:
<br>
<br>
依存関係のライブラリを、以下に示す2種類のいずれかの方法でインストールする。<br>
依存関係のライブラリを、以下に示す2種類のいずれかの方法でインストールする。<br>
==== パッケージ管理システムの使用 ====
<br>
===== パッケージ管理システムの使用 =====
  # RHEL
  # RHEL
  sudo dnf install gmp-devel mpfr-devel libmpc-devel isl-devel  
  sudo dnf install gmp-devel mpfr-devel libmpc-devel isl-devel  
24行目: 26行目:
                     gmp-devel mpfr-devel mpc-devel isl-devel
                     gmp-devel mpfr-devel mpc-devel isl-devel
<br>
<br>
 
===== スクリプトの使用 =====
==== GCCのモジュールの使用 ====
[https://gcc.gnu.org GCCの公式Webサイト]にアクセスして、GCCのソースコードをダウンロードする。<br>
[https://gcc.gnu.org GCCの公式Webサイト]にアクセスして、GCCのソースコードをダウンロードする。<br>
ダウンロードしたファイルを解凍する。<br>
ダウンロードしたファイルを解凍する。<br>
64行目: 65行目:
  make check
  make check
  make install
  make install
<br><br>
<br>
 
==== ビルドおよびインストール ====
== GCCのインストール ==
[https://gcc.gnu.org GCCの公式Webサイト]にアクセスして、GCCのソースコードをダウンロードする。<br>
[https://gcc.gnu.org GCCの公式Webサイト]にアクセスして、GCCのソースコードをダウンロードする。<br>
ダウンロードしたファイルを解凍する。<br>
ダウンロードしたファイルを解凍する。<br>
139行目: 139行目:
<br>
<br>
最後に、PCを再起動する。<br>
最後に、PCを再起動する。<br>
<br><br>
== 共有ライブラリの参照設定 ==
GCCをソースコードからインストールした場合、共有ライブラリが/<GCCのインストールディレクトリ>/lib64に作成されるが、<br>
環境変数のパスが通っていないため、Linuxから参照されない。<br>
<br>
<br>
そのため、以下のいずれかの方法で環境変数のパスを通す必要がある。<br>
==== GCCのライブラリの設定 ====
* /etc/ld.so.confファイルに記述する。(システム全体)
GCCをソースコードからインストールした場合、共有ライブラリが/<GCCのインストールディレクトリ>/lib64に作成されるが、環境変数のパスが設定されていない。<br>
* ~/.profileファイルまたは~/.bashrcファイル等に、LD_LIBRARY_PATHを記述する。(ユーザごとに設定が必要)
そのため、以下に示すいずれかの方法で環境変数のパスを通す必要がある。<br>
* /etc/ld.so.confファイル (システム全体)
* ~/.profileファイル、または、~/.bashrcファイル等 (ユーザごとの設定)
*: 環境変数<code>LD_LIBRARY_PATH</code>を設定する。
<br>
<br>
==== ld.so.confファイルに設定する ====
===== ld.so.confファイルに設定する場合 =====
/etc/ld.so.confファイルに<code>/<GCCのインストールディレクトリ/lib64</code>を追記することで、Linuxがライブラリを認識する。<br>
/etc/ld.so.confファイルに<code>/<GCCのインストールディレクトリ/lib64</code>を追記することで、Linuxがライブラリを認識する。<br>
以下のコマンドを実行して、設定を追記する。<br>
  sudo vi /etc/ld.so.conf
  sudo vi /etc/ld.so.conf
<br>
# /etc/ld.so.confファイル
   
   
# /etc/ld.so.confファイル
  /<GCCのインストールディレクトリ/lib64
  /<GCCのインストールディレクトリ/lib64
<br>
<br>
上記の設定を反映させるため、<code>ldconfig</code>コマンドを実行する。<br>
設定を反映させるため、<code>ldconfig</code>コマンドを実行する。<br>
  ldconfig -v
  ldconfig -v
<br>
<br>
<code>ldconfig</code>コマンドを実行した時に表示される情報から、<br>
<code>ldconfig</code>コマンドを実行した時に表示される情報から、<br>
以下のように、<code>/<GCCのインストールディレクトリ/lib64</code>ディレクトリが読み込まれていることを確認する。<br>
以下に示すように、<code>/<GCCのインストールディレクトリ/lib64</code>ディレクトリが読み込まれていることを確認する。<br>
  /<GCCのインストールディレクトリ>/lib64:
  /<GCCのインストールディレクトリ>/lib64:
  ldconfig: /<GCCのインストールディレクトリ>/lib64/libstdc++.so.6.0.25-gdb.py is not an ELF file - it has the wrong magic bytes at the start.
  ldconfig: /<GCCのインストールディレクトリ>/lib64/libstdc++.so.6.0.25-gdb.py is not an ELF file - it has the wrong magic bytes at the start.
172行目: 170行目:
         libmpxwrappers.so.2 -> libmpxwrappers.so.2.0.1
         libmpxwrappers.so.2 -> libmpxwrappers.so.2.0.1
<br>
<br>
<code>ldconfig</code>コマンドを実行した結果、もし、以下のようなメッセージが表示された場合の対処方法を記載する。<br>
<code>ldconfig</code>コマンドを実行した結果、もし、以下に示すようなメッセージが表示される場合がある。<br>
  ldconfig: /<GCCのインストールディレクトリ>/lib64/libstdc++.so.6.0.25-gdb.py is not an ELF file - it has the wrong magic bytes at the start.
  ldconfig: /<GCCのインストールディレクトリ>/lib64/libstdc++.so.6.0.25-gdb.py is not an ELF file - it has the wrong magic bytes at the start.
<br>
<br>
186行目: 184行目:
  ldconfig -v
  ldconfig -v
<br>
<br>
また、<u>RHEL 7の場合</u>、/etc/ld.so.confファイルに<code>include ld.so.conf.d/*.conf</code>と設定されているが、<br>
また、<u>RHELの場合</u>、/etc/ld.so.confファイルに<code>include ld.so.conf.d/*.conf</code>と設定されているが、<br>
これは、ld.so.conf.dディレクトリ内のconf拡張子をもつファイルの内容を読み込むという設定である。<br>
これは、ld.so.conf.dディレクトリ内のconf拡張子をもつファイルの内容を読み込むという設定である。<br>
<br>
<br>
194行目: 192行目:
ここでは、/etc/ld.so.conf.d/UserAdd-lib64.confファイルを作成する。<br>
ここでは、/etc/ld.so.conf.d/UserAdd-lib64.confファイルを作成する。<br>
  sudo vi /etc/ld.so.conf.d/UserAdd-lib64.conf
  sudo vi /etc/ld.so.conf.d/UserAdd-lib64.conf
<br>
# UserAdd-lib64.confファイル
   
   
# UserAdd-lib64.confファイル
  /<GCCのインストールディレクトリ>/lib64
  /<GCCのインストールディレクトリ>/lib64
<br>
<br>
201行目: 200行目:
  ldconfig -v
  ldconfig -v
<br>
<br>
==== LD_LIBRARY_PATHに設定する ====
===== ~/.profileファイル、または、~/.bashrcファイル等に設定する場合 =====
この方法は、ユーザごとに設定する必要がある。<br>
この方法は、ユーザごとに設定する必要がある。<br>
~/.profileファイルまたは~/.bashrcファイル等に、LD_LIBRARY_PATHの設定を追加することで、ユーザがログインする際に設定が読み込まれる。<br>
<br>
~/.profileファイル、または、~/.bashrcファイル等に、環境変数<code>LD_LIBRARY_PATH</code>を設定することにより、ユーザがログインする際に設定が読み込まれる。<br>
  vi ~/.profile
  vi ~/.profile
<br>
<syntaxhighlight lang="sh">
# ~/.profileファイル
   
   
# ~/.profileファイル
  export LD_LIBRARY_PATH="/<GCCのインストールディレクトリ>/lib64:$LD_LIBRARY_PATH"
  export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/<GCCのインストールディレクトリ>/lib64
</syntaxhighlight>
<br>
<br>
上記の設定を反映させるため、PCを再起動または再ログインする。<br>
上記の設定を反映させるため、PCを再起動または再ログインする。<br>
<br><br>
<br>
 
==== libstdc++の入れ替え ====
== libstdc++の入れ替え ==
この操作を行うと、システムが不安定になる可能性があるため、必要な時にのみこれを行う。<br>
この操作を行うと、システムが不安定になる可能性があるため、必要な時にのみこれを行う。<br>
<br>
<br>
256行目: 258行目:
クロスコンパイラ向けBinutilsのビルドおよびインストールする。<br>
クロスコンパイラ向けBinutilsのビルドおよびインストールする。<br>
<u>インストールディレクトリは、クロスコンパイラ向けGCCのインストールディレクトリと同じディレクトリであることに注意する。</u><br>
<u>インストールディレクトリは、クロスコンパイラ向けGCCのインストールディレクトリと同じディレクトリであることに注意する。</u><br>
  ../configure --prefix=<クロスコンパイラ向けGCCのインストールディレクトリ> \
  ../configure CFLAGS="-g0 -O3 -fstack-protector-strong"                                        \
--build=x86_64-pc-linux-gnu --host=x86_64-pc-linux-gnu --target=aarch64-linux-gnu \
              CXXFLAGS="-g0 -O3 -fstack-protector-strong"                                      \
--disable-gdb --disable-nls --disable-multilib --disable-werror \
              --prefix=<クロスコンパイラ向けGCCのインストールディレクトリ>                                   \
--enable-gold --enable-lto --enable-plugins --enable-relro \
              --build=x86_64-pc-linux-gnu --host=x86_64-pc-linux-gnu --target=aarch64-linux-gnu \
--with-sysroot=<ターゲットのシステムルートディレクトリ> \
              --disable-gdb --disable-nls --disable-multilib --disable-werror                   \
CFLAGS="-g0 -O3 -fstack-protector-strong" \
              --enable-gold --enable-lto --enable-plugins --enable-relro                       \
CXXFLAGS="-g0 -O3 -fstack-protector-strong"
              --with-sysroot=<ターゲットのシステムルートディレクトリ>
   
   
  make -j $(nproc)
  make -j $(nproc)
276行目: 278行目:
クロスコンパイラ向けGCCをビルドする場合、ネイティブ向けGCCとバージョンを合わせた方がよい。<br>
クロスコンパイラ向けGCCをビルドする場合、ネイティブ向けGCCとバージョンを合わせた方がよい。<br>
  export PATH="/<上記でインストールしたBinutilsのインストールディレクトリ>/bin:$PATH" && \
  export PATH="/<上記でインストールしたBinutilsのインストールディレクトリ>/bin:$PATH" && \
  CC=<ネイティブ向けGCCのパス> CXX=<ネイティブ向けG++のパス> \
  CC=<ネイティブ向けGCCのパス> CXX=<ネイティブ向けG++のパス>                 \
  ../configure -v --prefix=<クロスコンパイラ向けGCCのインストールディレクトリ>  \
  ../configure CFLAGS="-g0 -O3 -fstack-protector-strong"          \
--build=x86_64-pc-linux-gnu --host=x86_64-pc-linux-gnu --target=aarch64-linux-gnu \
              CXXFLAGS="-g0 -O3 -fstack-protector-strong"        \
--enable-languages=c,c++ --disable-bootstrap --disable-multilib --disable-nls \
              -v --prefix=<クロスコンパイラ向けGCCのインストールディレクトリ>  \
--with-sysroot=<ターゲットのシステムルートディレクトリ> \
              --build=x86_64-pc-linux-gnu --host=x86_64-pc-linux-gnu --target=aarch64-linux-gnu \
CFLAGS="-g0 -O3 -fstack-protector-strong" \
              --enable-languages=c,c++ --disable-bootstrap --disable-multilib --disable-nls     \
CXXFLAGS="-g0 -O3 -fstack-protector-strong"
              --with-sysroot=<ターゲットのシステムルートディレクトリ>
   
   
  make -j $(nproc)
  make -j $(nproc)

案内メニュー