制作CLFS过程

clfs

整个制作过程参考《手把手教你如何建立自己的Linux系统》

交叉编译

在一个系统平台生成另一个系统平台的程序,本次是在X86 Linux平台使用交叉编译工具链生成MIPS Linux平台的系统。交叉编译可以用来生成裁剪过的嵌入式系统或者不相同的平台。

字节序

大端,数据存放顺序和地址增长顺序相同;小端,数据存放顺序和地址增长顺序相反。

Build、Host和Target

在configure配置时,需要使用这三个参数,build表示编译软件使用的平台,host表示编译出来的软件运行的平台,target是软件处理的平台。当编译平台(build参数)和运行平台(host参数)不一致时,称为交叉编译。有些软件的target的参数可以不指定。在参数配置的是平台名称,比如i686-pc-linux-gnu,i686是指架构名称,pc是计算机类型,linux-gnu是操作系统,可以通过uname命令得到系统信息。

交叉工具链的制作

交叉工具链里的binutils和gcc用来生成目标平台的代码,在软件包的最开始要下载安装这两个软件。首先就是利用主系统的gcc和binutils编译生成binutils和gcc(此时的版本只是c语言版本,并不完整),再编译出交叉版本的binutil和gcc,与LFS不同,交叉版本的binutil和gcc使用的还是主系统的glibc。

sysroot

在configure配置过程中,使用—with-sysroot参数制定目录,然后编译链接的时候,在制定目录寻找头文件和函数库。DESTDIR设置和—with-sysroot参数作用一样。

虚拟根目录

Linux系统可以存在多个运行环境,每个运行环境都有自己的根目录。

平台参数

平台参数如果在配置过程中不指定则会进行自动探测,探测一般是由软件包中的config.guess脚本进行,该脚本会根据当前系统的uname等命令的返回值来进行判断,并最终返回猜测结果。通常猜测结果是准确的,但如果计算机或系统十分特别,则可能判断错误,这时就必须使用手工指定的方式。
例子:

i686-pc-linux-gnu

i686
架构名称,主要描述CPU的指令集,常用的还有个"pentinum"、“x86_64”、“mips”等。64位MIPS小端指令集,表示为“mips64el”
pc
运行计算机的类型,“pc”指个人计算机,不确定类型的计算机可以使用“unknown”来表示“未知”。
linux-gnu
“linux”和“gnu”合起来表示操作系统。

部分软件包

Linux-Header
原因:
比如glibc安装需要使用到linux的内核头文件,把头文件安装在dest目录下,然后使用cp命令复制到/loongson/usr/include目录下
Binutils
原因:
Binutils中有汇编、链接的命令工具,在glibc中会使用到binutils中的命令、头文件和动态链接库
使用sysroot制定安装目录为${TARGET_DIR},打上binutils-2.20-branch_update-1.patch补丁,因为是3A3000平台,所以不打上binutils-2.20-loongson2f-1.patch补丁
gcc(仅支持c语言)
原因:
安装编译器gcc,glibc需要使用gcc提供支持。在configure配置中有—enable-languages=c,本次仅支持glibc的编译,还不是完整的gcc,安装目录是在在目标系统
它是一个编译器集合,包括gcc
正确
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值