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中则需要? |
|