分享

CLFS1&CLFS2工具链比较

 喜欢雨路的火焰狼 2006-11-06

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路径信息,跟C1with-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那样改StartFileSpecgcc预处理默认路径和gcc包含路径中的/usr/local/include了,还有由于glibc头文件已经装好,--disable-threads也不需要了,其他一样,这里sysroot参数很好

5         glibc

C1:先打补丁和sed,没有涉及路径信息;采用本地gcc编译,中间利用交叉版gccarranlib工具,--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/glibcglibc的可执行程序的安装路径就到了install_root/usr/lib/glibc

6         最终的交叉gcc,动态

C1:打了四个补丁,比C2多打spec补丁,如第四步中类似;然后一样要修改StartfileSpec指向,gcc预处理包含搜索路径指向信息,跟4不同的就是包含了cc++,不用—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中则需要?

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多