13,009
回編集
455行目: | 455行目: | ||
make -j $(nproc) | make -j $(nproc) | ||
make install-strip | make install-strip | ||
<br> | |||
==== Risc-V 64bit (システムルートあり) ==== | |||
まず、[https://ftp.gnu.org/gnu/binutils/ GNUの公式Webサイト]から、Binutilsをダウンロードする。<br> | |||
ダウンロードしたファイルを解凍する。<br> | |||
tar xf binutils-<バージョン>.tar.xz | |||
cd binutils-<バージョン> | |||
<br> | |||
ビルドディレクトリを作成する。<br> | |||
mkdir build && cd build | |||
<br> | |||
クロスコンパイラ向けBinutilsのビルドおよびインストールする。<br> | |||
<u>インストールディレクトリは、クロスコンパイラ向けGCCのインストールディレクトリと同じディレクトリであることに注意する。</u><br> | |||
../configure --prefix=<クロスコンパイラ向けGCCのインストールディレクトリ> | |||
--build=x86_64-pc-linux-gnu \ | |||
--host=x86_64-pc-linux-gnu \ | |||
--target=riscv64-unknown-linux-gnu \ | |||
--disable-nls \ | |||
--disable-werror \ | |||
--with-sysroot=<ターゲットのシステムルートディレクトリ> | |||
make -j $(nproc) | |||
make install | |||
<br> | |||
次に、[https://gcc.gnu.org GCCの公式Webサイト]にアクセスして、GCCのソースコードをダウンロードして解凍する。<br> | |||
または、以下のコマンドを実行してダウンロードする。<br> | |||
wget http://ftp.tsukuba.wide.ad.jp/software/gcc/releases/gcc-<バージョン>/gcc-<バージョン>.tar.xz | |||
tar xf gcc-<バージョン>.tar.xz | |||
cd gcc-<バージョン> | |||
<br> | |||
export PATH="/<上記でインストールしたBinutilsのインストールディレクトリ>/bin:$PATH" | |||
../configure --prefix=<クロスコンパイラ向けGCCのインストールディレクトリ> \ | |||
--build=x86_64-pc-linux-gnu \ | |||
--host=x86_64-pc-linux-gnu \ | |||
--target=riscv64-unknown-linux-gnu \ | |||
--enable-languages=c,c++ \ | |||
--disable-multilib \ | |||
--disable-nls \ | |||
--with-sysroot=<ターゲットのシステムルートディレクトリ> | |||
make -j $(nproc) | |||
make install-strip | |||
<br> | |||
==== Risc-V 64bit (Newlibを使用する場合) ==== | |||
まず、[https://ftp.gnu.org/gnu/binutils/ GNUの公式Webサイト]から、Binutilsをダウンロードする。<br> | |||
ダウンロードしたファイルを解凍する。<br> | |||
tar xf binutils-<バージョン>.tar.xz | |||
cd binutils-<バージョン> | |||
<br> | |||
ビルドディレクトリを作成する。<br> | |||
mkdir build && cd build | |||
<br> | |||
クロスコンパイラ向けBinutilsのビルドおよびインストールする。<br> | |||
<u>インストールディレクトリは、クロスコンパイラ向けGCCのインストールディレクトリと同じディレクトリであることに注意する。</u><br> | |||
../configure --prefix=<クロスコンパイラ向けGCCのインストールディレクトリ> | |||
--build=x86_64-pc-linux-gnu \ | |||
--host=x86_64-pc-linux-gnu \ | |||
--target=riscv64-unknown-elf \ | |||
--disable-nls \ | |||
--disable-werror | |||
make -j $(nproc) | |||
make install | |||
<br> | |||
<u>次に、GCCの初期ビルドを行う。</u><br> | |||
[https://gcc.gnu.org GCCの公式Webサイト]にアクセスして、GCCのソースコードをダウンロードして解凍する。<br> | |||
または、以下のコマンドを実行してダウンロードする。<br> | |||
wget http://ftp.tsukuba.wide.ad.jp/software/gcc/releases/gcc-<バージョン>/gcc-<バージョン>.tar.xz | |||
tar xf gcc-<バージョン>.tar.xz | |||
cd gcc-<バージョン> | |||
<br> | |||
export PATH="/<上記でインストールしたBinutilsのインストールディレクトリ>/bin:$PATH" | |||
../configure --prefix=<クロスコンパイラ向けGCCのインストールディレクトリ> \ | |||
--build=x86_64-pc-linux-gnu \ | |||
--host=x86_64-pc-linux-gnu \ | |||
--target=riscv64-unknown-elf \ | |||
--enable-languages=c \ # まず、最小限のGCCコンパイラを生成する | |||
# このコンパイラはC言語のみをサポートし、標準ライブラリなしで動作可能 | |||
--disable-multilib \ | |||
--disable-nls \ | |||
--without-headers \ # ターゲットのシステムヘッダを使用せずにビルド | |||
--with-newlib # 組み込みシステム向けのC標準ライブラリNewlibを使用 | |||
# GCCの一部のみをビルドおよびインストール | |||
make all-gcc -j $(nproc) | |||
make install-gcc | |||
<br> | |||
NewLibを使用する場合、NewLibのソースコードが必要になる。<br> | |||
<br> | |||
NewLibとは、組み込みシステムやベアメタル環境向けの軽量なC標準ライブラリ実装である。<br> | |||
GCCと一緒に使用することにより、完全なクロスコンパイル環境を構築できる。<br> | |||
<br> | |||
NewLibを使用する理由は以下の通りである。<br> | |||
* 軽量 | |||
*: 組み込みシステムや制限のあるハードウェア向けに最適化されている。 | |||
* 移植性 | |||
*: 多くのアーキテクチャをサポートしている。 | |||
* カスタマイズ性 | |||
*: 特定のターゲット向けに容易にカスタマイズできる。 | |||
<br> | |||
mkdir build && cd build | |||
../configure --prefix=<クロスコンパイラ向けGCCのインストールディレクトリ> \ | |||
--target=riscv64-unknown-elf | |||
make -j $(nproc) | |||
make install | |||
<br> | |||
<u>GCCの最終ビルドを行う。</u><br> | |||
export PATH="/<上記でインストールしたBinutilsのインストールディレクトリ>/bin:$PATH" | |||
../configure --prefix=<クロスコンパイラ向けGCCのインストールディレクトリ> \ | |||
--build=x86_64-pc-linux-gnu \ | |||
--host=x86_64-pc-linux-gnu \ | |||
--target=riscv64-unknown-elf \ | |||
--enable-languages=c,c++ \ # 完全な機能を持つGCC (最終ビルド) を生成 | |||
--disable-multilib \ | |||
--disable-nls \ | |||
--without-headers \ # ターゲットのシステムヘッダを使用せずにビルド | |||
--with-newlib \ # 組み込みシステム向けのC標準ライブラリNewlibを使用 | |||
--with-sysroot=/<Newlibのインストールディレクトリ>/riscv64-unknown-elf # Newlibのヘッダファイルとライブラリの場所を指定 | |||
make all -j $(nproc) | |||
make install | |||
<br> | <br> | ||