交叉编译 MIPS Linux From Scratch
交叉编译 MIPS LFS 系统
编译环境
主机:X86
系统:Fedora 28
宿主工具链:x86_64-redhat-linux(8.3.1)
宿主内核:4.20.16-100.fc28.x86_64
MIPS-LFS系统运行目标平台:龙芯3A3000平台
有很多 Linux 爱好者都想自己制作一个可以满足自己工作、娱乐的操作系统,大家在网上搜索制作操作系统的资料,但大都是 《Linux From Scratch》的手册,里面的内容是操作步骤,没有对细节概念做出解释,所以就有了这关于程序编译、LFS制作、交叉编译LFS系列的分享。
在开始制作 LFS 前需要熟练使用 Linux 操作系统,能够完成日常的工作、学习,技术学习书单可以参考之前的文章《新手学习参考,做基础软件开发者》;清楚编译性语言的编译各阶段,从预处理、编译、汇编、链接的四个阶段、ELF文件的三个类型《细说编译性语言的编译四大阶段》,需要了解程序执行时所需的条件都有什么。当清楚以上条件后你就可以去根据 LFS 手册进行 X86 下的 LFS 系统的制作了。
但只做好 X86下的 LFS 你就停止折腾了吗?不,这才刚开始而已,现在进入制作 MIPS-LFS 正题,启程准备制作 MIPS 下的 Linux From Scratch,制作前需要了解交叉编译的两个概念,“交叉编译”、“交叉编译工具链”的关系,若对交叉编译的概念不清楚的可以参考之前的分享 《深入理解交叉编译(Cross Compile)》,明白三元组,清楚build、haost、target的不同时的三者关系;最后熟悉 Linux 系统的目录结构、FHS标准,若对 Linux 系统结构不熟悉的可以参老制作 Busybox 时的目录构建 《BusyBox 构建 MIPS ramdisk》,当准备工作知识做好后就马上开始 MIPS Linux From Scratch 之旅。
有前期的 X86 下制作的 LFS 的经验,制作 MIPS 下的 LFS 就有了很好的助力,难点在于交叉编译链的制作时的编译参数的选择、工具链的调整选择、最终目的系统目录构建,当这三个问题解决后其余操作都相同于之前 LFS 的过程。
调整工具链,最终 编译链C 和 编译链A 一样为内部依赖- MIPS Linux Scratch的制作的注意事项,其他和 LFS 手册同
- abi值
- with-arch=mips64r2 具体信息可以去参考 GCC MIPS Options
- --build、--host、--targrt 的三者取值可以参考之前交叉编译链构建时的解析《深入理解交叉编译(Cross Compile)》
- 目的系统目录结构的构建,可以对比宿主系统的目录结构、结合 BusyBox 目录结构,去制作目的系统的目录结构。