Linux From Scratch / 9. インストール 3



toolchain の再調整

cd /sources/binutils-build
make -C ld INSTALL=/tools/bin/install install
cd ..
rm -rf binutils-2.14
rm -rf binutils-build

GCC のSPECファイルを修正する

SPECFILE=/tools/lib/gcc-lib/*/*/specs
sed -e 's@ /tools/lib/ld-linux.so.2@ /lib/ld-linux.so.2@g' $SPECFILE > newspecfile
mv -f newspecfile $SPECFILE
unset SPECFILE

Binutils と GCC はコンパイラの最適化オプションをつけていると失敗する場合があるので、設定を消す

unset CFLAGS
unset CXXFLAGS

Binutils-2.14 のインストール

cd /sources
tar jxf binutils-2.14.tar.bz2
cd binutils-2.14
mkdir ../binutils-build
cd ../binutils-build
../binutils-2.14/configure --prefix=/usr --enable-shared
make tooldir=/usr
make check
make tooldir=/usr install
cp ../binutils-2.14/include/libiberty.h /usr/include
cd ..
rm -rf binutils-2.14
rm -rf binutils-build

GCC-3.3.2 のインストール

tar jxf gcc-core-3.3.2.tar.bz2
tar jxf gcc-g++-3.3.2.tar.bz2
tar jxf gcc-testsuite-3.3.2.tar.bz2
cd gcc-3.3.2
patch -Np1 -i ../gcc-3.3.2-no_fixincludes-1.patch
sed -i 's/install_to_$(INSTALL_DEST) //' libiberty/Makefile.in
mkdir ../gcc-build
cd ../gcc-build
../gcc-3.3.2/configure --prefix=/usr \
 --enable-shared --enable-threads=posix \
 --enable-__cxa_atexit --enable-clocale=gnu \
 --enable-languages=c,c++
make
make -k check
make install
ln -s ../usr/bin/cpp /lib
ln -s gcc /usr/bin/cc
cd ..
rm -rf gcc-3.3.2
rm -rf gcc-build

消していた最適化オプションを戻す

export CFLAGS=$CFLAGS_HOLD
export CXXFLAGS=$CFLAGS

Coreutils-5.0 のインストール

tar jxf coreutils-5.0.tar.bz2
cd coreutils-5.0
patch -Np1 -i ../coreutils-5.0-posixver-2.patch
patch -Np1 -i ../coreutils-5.0-uname.patch
patch -Np1 -i ../coreutils-5.0-hostname-2.patch
./configure --prefix=/usr
make
make install-root
echo "dummy1:x:1000" >> /etc/group
echo "dummy2:x:1001:dummy" >> /etc/group
echo "dummy:x:1000:1000:::/bin/bash" >> /etc/passwd
make check-root
su dummy -c "make RUN_EXPENSIVE_TESTS=yes check"
sed -i.bak '/dummy/d' /etc/passwd /etc/group
make install
mv /usr/bin/{basename,cat,chgrp,chmod,chown,cp,dd,df} /bin
mv /usr/bin/{date,echo,false,head,install,ln,ls} /bin
mv /usr/bin/{mkdir,mknod,mv,pwd,rm,rmdir,sync} /bin
mv /usr/bin/{sleep,stty,su,test,touch,true,uname} /bin
mv /usr/bin/chroot /usr/sbin
rm /usr/bin/kill
ln -s test /bin/[
ln -s ../../bin/install /usr/bin
cd ..
rm -rf coreutils-5.0

Zlib-1.2.1 のインストール

tar jxf zlib-1.2.1.tar.bz2
cd zlib-1.2.1
./configure --prefix=/usr --shared
make
make check
make install
make clean
./configure --prefix=/usr
make
make check
make install
chmod 644 /usr/lib/libz.a
mv /usr/lib/libz.so.* /lib
ln -sf ../../lib/libz.so.1 /usr/lib/libz.so
cd ..
rm -rf zlib-1.2.1