LFS on Ubuntu(5) 一時的環境の構築 (GCC-4.4.3 - 2回目〜)
部分的に GCC の古い機能を復活させるパッチを適用
$ cd $LFS/sources/gcc-4.4.3 $ patch -Np1 -i ../gcc-4.4.3-startfiles_fix-1.patch
fixincludes スクリプトの実行を無効とする
$ cp -v gcc/Makefile.in{,.orig} $ sed 's@\./fixinc\.sh@-c true@' gcc/Makefile.in.orig > gcc/Makefile.in
コンパイラフラグ -fomit-frame-pointer を有効化
$ cp -v gcc/Makefile.in{,.tmp} $ sed 's/^T_CFLAGS =$/& -fomit-frame-pointer/' gcc/Makefile.in.tmp \ > gcc/Makefile.in
すべての実行モジュール類を新しい Glibc に対してリンクする
$ cd gcc-4.4.3 for file in \ $(find gcc/config -name linux64.h -o -name linux.h -o -name sysv4.h) do cp -uv $file{,.orig} sed -e 's@/lib\(64\)\?\(32\)\?/ld@/tools&@g' \ -e 's@/usr@/tools@g' $file.orig > $file echo ' #undef STANDARD_INCLUDE_DIR #define STANDARD_INCLUDE_DIR 0 #define STANDARD_STARTFILE_PREFIX_1 "" #define STANDARD_STARTFILE_PREFIX_2 ""' >> $file touch $file.orig done
GCC のインストール
$ rm -rf gcc-build $ tar -jxf mpfr-2.4.2.tar.bz2 $ mv -v mpfr-2.4.2 ./gcc-4.4.3/mpfr $ tar -jxf gmp-5.0.0.tar.bz2 $ mv -v gmp-5.0.0 ./gcc-4.4.3/gmp $ mkdir -v gcc-build $ cd gcc-build $ CC="$LFS_TGT-gcc -B/tools/lib/" \ AR=$LFS_TGT-ar RANLIB=$LFS_TGT-ranlib \ ../gcc-4.4.3/configure --prefix=/tools \ --with-local-prefix=/tools --enable-clocale=gnu \ --enable-shared --enable-threads=posix \ --enable-__cxa_atexit --enable-languages=c,c++ \ --disable-libstdcxx-pch --disable-multilib \ --disable-bootstrap $ make // 超長い(笑) $ make install
シンボリックリンクの作成
$ ln -vs gcc /tools/bin/cc
健全性検査 (sanity check)
echo 'main(){}' > dummy.c cc dummy.c readelf -l a.out | grep ': /tools'
テストファイルの削除
rm -v dummy.c a.out
Tcl のインストール
$ tar zxvf tcl8.5.8-src.tar.gz $ cd tcl8.5.8/unix $ ./configure --prefix=/tools $ make // テストスイート $ TZ=UTC make test $ make install
インストールされたライブラリを書き込み可能にし、後でデバッグシンボルを削除できるようにする
chmod -v u+w /tools/lib/libtcl8.5.so
Tcl のヘッダファイルをインストール
make install-private-headers
必要となるシンボリックリンクを生成
ln -sv tclsh8.5 /tools/bin/tclsh