CLFS1&CLFS2工具链比较

来源:百度文库 编辑:神马文学网 时间:2024/04/28 00:29:19
1, 内核头文件拷贝
C1:考到$CLFS/tools/include下面
C2:  考的东西比C1多,并且是到$CLFS/usr/include下面
2, 交叉版binutils
C1:通过--with-lib-path=/tools/lib ,使得生成的linker以后链接/tools/lib下面的库
C2:通过--with-sysroot=$CLFS,使得生成的linker搜索库时,在通常默认路径前加上sysroot路径信息,跟C1的with-lib-path功能类似
3, glibc头文件
make install-headers仅仅C2中有,装在$install_root/prefix下面,--with-headers=$CLFS/usr/include利用已经拷贝好的内核头文件
4,  交叉版gcc,静态的
C1:打了三个补丁,spec的,posix的,cross_search_path的
先修改StartFile Spec指向/tools/lib,再修改gcc的预处理的默认头/tools/include,--with-local-prefix=/tools去除生成的gcc包含路径中的/usr/local/include,--disable-threads防止gcc搜寻多线程相关的头文件因为只有当glibc头文件安装后才能找到多线程信息,仅安装c语言的,--disable-shared静态生成,编译采用make all-gcc,安装采用 make install-gcc
C2:只打了两个补丁,posix的,cross_search_path的
就配置了,采用—with-sysroot参数,这样就不用如C1那样改StartFileSpec和gcc预处理默认路径和gcc包含路径中的/usr/local/include了,还有由于glibc头文件已经装好,--disable-threads也不需要了,其他一样,这里sysroot参数很好
5        glibc
C1:先打补丁和sed,没有涉及路径信息;采用本地gcc编译,中间利用交叉版gcc,ar,ranlib工具,--prefix=/toos装到tools下面,--with-binutils=/cross-tools/bin告诉glibc用目标体系的binutils,--with-headers=/tools/include利用内核头文件
C2:打补丁差不多;添加了install_root=${CLFS}到配置脚本参数中,使得glibc会装到$CLFS/prefix即${CLFS}/usr下面,也指定到刚编好拷贝好的binutils和内核头文件,稍微不同的是指定了—libexecdir=/usr/lib/glibc,glibc的可执行程序的安装路径就到了install_root/usr/lib/glibc了
6        最终的交叉gcc,动态
C1:打了四个补丁,比C2多打spec补丁,如第四步中类似;然后一样要修改StartfileSpec指向,gcc预处理包含搜索路径指向信息,跟4不同的就是包含了c和c++,不用—disable-threads了,就—enable-threads=posix,主要是为了c++对多线程代码的异常处理,-enable-shared动态链接;编译时,采用make AS_FOR_TARGET=”${CLFS_TARGET}-as”LD_FOR_TARGET=”${CLFS_TARGET}-ld” ,安装make install
C2:仍然采用—with-sysroot参数搞定,编译就只make一下
在CLFS1中获得静态交叉版的gcc不需要先安装glibc,而在clfs2中则需要?