第9节 编译glibc 64位
用上面做的$LFS_TGT binutils gcc生成用于$LFS_TGT的c库。
tar xvfj ../glibc-2.14.1.tar.bz2
cd glibc-2.14.1
patch -Np1 -i ../../glibc-2.14.1-gcc_fix-1.patch
patch -Np1 -i ../../glibc-2.14.1-cpuid-1.patch
mkdir -v ../glibc-build-64
cd ../glibc-build-64
echo "install_root = $(pwd)/img" >configparms
case `uname -m` in i?86) echo "CFLAGS += -march=i486 -mtune=native" >> configparms ;; esac
../glibc-2.14.1/configure --prefix=/tools --libdir=/tools/lib64 --host=$LFS_TGT --build=$LFS_TGT --disable-profile --enable-add-ons --with-headers=/tools/include --enable-kernel=2.6.25 --enable-multi-arch libc_cv_forced_unwind=yes libc_cv_c_cleanup=yes libc_cv_slibdir=/tools/lib64
如果不指定--build,它将由如下的代码自动生成
--build=$(../glibc-2.14.1/scripts/config.guess)
guess出来的编译器,就是之前做LFS的gcc和binutils用的,或者找不着了就是刚做出来的LFS gcc等。这里,将它显式指定为LFS的gcc。
--host必须指定,它会影响到一些include的位置。 /home/lfs/build/tools/bin/../lib/gcc/x86_64-lfs-linux-gnu/4.6.1/include 这个库是给之前的LFS gcc 等用的,host应是LFS,当然,它也给第二次做出的gcc(shared)用。
在这个编译中,还会生成一些很重要的库文件:/tools/lib/crt*。
在编译之前,可以查看configure的结果,在config.log里,如下,查看最后会用哪个C编译器工作,内容如下:
cross_compiling='no'
CC='x86_64-lfs-linux-gnu-gcc'
正如所愿,开始用刚做出来的编译器来编译glibc库了。
然后,开始编译过程。
make 2>&1|tee out.make
mkdir -pv $(pwd)/img/tools/etc
touch img/tools/etc/ld.so.conf
make install DESTDIR=$(pwd)/img 2>&1|tee out.install
cd ..