トップ > 最小システムの構築 > 一時的な開発ツールのビルド(後半) >
GCC

  

GCCのビルド

GCCは、GNUプロジェクトによる各種プログラミング言語用のコンパイラ群です。 当初はC言語用のコンパイラでしたが、現在は、C++、Java、Fortranなど多くの言語に対応しています。

/tools以下の開発ツールでコンパイル・リンクされるため、Fedoraに依存しないGCCがビルド・インストールされます

ソースファイルの展開

ソースファイルを展開します。


cd $MYLINUX/sources
tar xvf gcc-4.9.2.tar.bz2
cd gcc-4.9.2

 

ソースファイルの修正

展開したソースファイルを修正します。


cat gcc/limitx.h gcc/glimits.h gcc/limity.h > `dirname $($MYLINUX_TARGET-gcc -print-libgcc-file-name)`/include-fixed/limits.h
for file in $(find gcc/config -name linux64.h -o -name linux.h -o -name sysv4.h) ; do
  sed -i -e 's,/lib\(64\)\?\(32\)\?/ld,/tools&,g' -e 's,/usr,/tools,g' $file
  echo '
#undef STANDARD_STARTFILE_PREFIX_1
#undef STANDARD_STARTFILE_PREFIX_2
#define STANDARD_STARTFILE_PREFIX_1 "/tools/lib/"
#define STANDARD_STARTFILE_PREFIX_2 ""' >> $file
done

 

他のソフトウェアのソースファイルの追加

展開したソースファイルに他のソフトウェアのソースファイルを追加します。


tar xvf ../gmp-5.1.3.tar.xz
mv gmp-5.1.3 gmp
tar xvf ../mpfr-3.1.2.tar.xz
mv mpfr-3.1.2 mpfr
tar xvf ../mpc-1.0.3.tar.gz
mv mpc-1.0.3 mpc

 
  
GMP(GNU Multi-Precision Library)は、高精度演算のライブラリです。
  
MPFR(Multi-Precision Floating-Point)は、高精度浮動小数点演算のライブラリです。
  
MPC(Multi-Precision Complex)は、高精度複素数のライブラリです。
  
GCCをビルドするには上記のライブラリが必要になります。

ビルド用ディレクトリの準備

ビルド用ディレクトリを準備します。


mkdir -vp ../gcc-build
cd ../gcc-build

 
  
GCCでは、ソースファイルが置かれているディレクトリでのビルドは推奨されていません。 別にビルド用のディレクトリを用意し、そこでビルドを行うことが推奨されています。

configure

configureを実行します。


CC=$MYLINUX_TARGET-gcc CXX=$MYLINUX_TARGET-g++ AR=$MYLINUX_TARGET-ar RANLIB=$MYLINUX_TARGET-ranlib ../gcc-4.9.2/configure \
  --prefix=/tools \
  --enable-languages=c,c++ \
  --disable-multilib \
  --disable-libgomp \
  --disable-libstdcxx-pch \
  --disable-bootstrap \
  --with-local-prefix=/tools \
  --with-native-system-header-dir=/tools/include > ../../logs/configurelog.gcc 2>&1

 
  
1回目のGCCのビルドでは、ターゲットプラットフォーム(--target=)を指定しましたが、今回は指定しません。
  
configureコマンドの前に、CC=$MYLINUX_TARGET-gcc CXX=$MYLINUX_TARGET-g++ AR=$MYLINUX_TARGET-ar RANLIB=$MYLINUX_TARGET-ranlibと記述しています。
  
上記の記述は、/tools/binディレクトリにある i686-mylinux-linux-gnu-gcc、i686-mylinux-linux-gnu-g++、i686-mylinux-linux-gnu-ar、i686-mylinux-linux-gnu-ranlibを使用するように設定するための記述です。
  
それらの実行ファイルは、Binutilsの1回目のビルドとGCCの1回目のビルドでインストールされた実行ファイル、つまり、クロス開発用の開発ツールです。

configureが終了したら、ログファイルに出力された内容を参照し、正常に終了したことを確認します。


cat ../../logs/configurelog.gcc

 

ビルド

ビルドを実行します。


make

 

ビルドが終了したら、画面に出力された内容を参照し、正常に終了したことを確認します。

インストール

インストールを行います。


make install

 

インストールが終了したら、画面に出力された内容を参照し、正常に終了したことを確認します。

インストール後の追加作業

インストール後の追加作業を行います。 gcc に cc という名称のシンボリックリンクを与えます。


ln -vsf gcc /tools/bin/cc

 

今後の作業でビルドするソフトウェアの中にはコンパイラを cc で呼び出すものもあるかもしれません。 そこで、gcc に cc という名称のシンボリックリンクを与えています。

後始末

ディスクを圧迫しないよう、ビルド用のディレクトリを削除します。


cd ..
rm -fr gcc-4.9.2
rm -fr gcc-build

 
  
  

まとめ

GCCは、GNUプロジェクトによる各種プログラミング言語用のコンパイラ群です。

メニュー