LFS 学习日记(第5章构建临时系统之5.5. GCC-4.4.3 - 第一遍)

2010年06月18日 星期五
todo: 学习 Linux 下编写C语言的基础知识。包括:标准C语言;利用 Linux 下的特定库编译C程序;适合源码编译安装、特定平台的二进制包的安装的编写与制作(如:autoconf的使用、Makefile的编写等等)...

http://www.linuxfromscratch.org/lfs/view/6.6/chapter05/gcc-pass1.html

1、question: 第一遍编译gcc的configure同样使用了--target=$LFS_TGT的交叉编译参数,问:如果不用这个参数有什么后果?

2、question: libmudflap, libssp and libgomp 是做什么用的?

lfs:/mnt/lfs/sources/gcc-build$ time { ../gcc-4.4.3/configure     --target=$LFS_TGT --prefix=/tools     --disable-nls --disable-shared --disable-multilib     --disable-decimal-float --disable-threads     --disable-libmudflap --disable-libssp     --disable-libgomp --enable-languages=c && make && make install; }

real    9m12.180s
user    9m5.614s
sys    6m55.250s

lfs:~$ ln -vs libgcc.a `$LFS_TGT-gcc -print-libgcc-file-name | \
>     sed 's/libgcc/&_eh/'`
`/mnt/lfs/tools/bin/../lib/gcc/i686-lfs-linux-gnu/4.4.3/libgcc_eh.a' -> `libgcc.a'
无论在哪个目录下执行此命令,libgcc_eh.a 都会正确的链接到 libgcc.a 。也就是说,只要指定了链接名称的全路径,只需要链接目标的文件名,则链接名称(Link name)都会链接到同目录的链接目标(Target)。
sed 's/libgcc/&_eh/',这里的&代表前面的libgcc,意思就是说把libgcc替换成libgcc_eh;如在eh/后面加一个g字符,则
表示替换每行中所有的libgcc,否则只替换每行碰到的第一个libgcc 。