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

  

GCCのビルド

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

  
以前のGCCは "GNU C Compiler" の略でしたが、今では、"GNU Compiler Collection" の略となっています。

ソースファイルの展開

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


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

 

ソースファイルの修正

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


sed -i -e '/^# Test for stack protector support in target C library/agcc_cv_libc_provides_ssp=yes' gcc/configure
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を実行します。


../gcc-4.9.2/configure \
  --target=$MYLINUX_TARGET \
  --prefix=/tools \
  --enable-languages=c,c++ \
  --disable-nls \
  --disable-shared \
  --disable-multilib \
  --disable-decimal-float \
  --disable-threads \
  --disable-libatomic \
  --disable-libgomp \
  --disable-libitm \
  --disable-libquadmath \
  --disable-libsanitizer \
  --disable-libssp \
  --disable-libvtv \
  --disable-libcilkrts \
  --disable-libstdc++-v3 \
  --with-newlib \
  --with-sysroot=$MYLINUX \
  --with-local-prefix=/tools \
  --with-native-system-header-dir=/tools/include \
  --without-headers > ../../logs/configurelog.gcc 2>&1

 
  
クロス開発用にはC言語とC++言語のコンパイラが必要であるため --enable-languages=c,c++ と指定しています。
  
--with-newlib は標準CライブラリとしてNewlibを利用するように指示するための指定です。 Newlibは、Red Hat社が開発した組み込みシステム向けの標準Cライブラリです。 まだglibcが存在しないため、ここではNewlibを利用します。

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


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

 

ビルド

ビルドを実行します。


make

 

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

インストール

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


make install

 

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

  
/tools/bin ディレクトリにインストールされた実行ファイルは、i686-mylinux-linux-gnu-gccのようなファイル名になっています。 これは、configureの実行時に--target=$MYLINUX_TARGETと指定したためです。

後始末

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


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

 
  
  

まとめ

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

メニュー