《手把手教你构建自己的 Linux 系统》学习笔记(5)
交叉编译是什么?
交叉编译就是在一个系统上,编译生成另外一个系统运行的程序文件。
「硬件体系结构」和「操作系统」的关系是什么?
硬件体系结构也可以称为架构,主要是通过 CPU 的指令集来进行区分的,操作系统通常是以内核来进行区分的。
一种体系结构可以运行多种操作系统,一种操作系统也可能运行在不同的体系结构上,所以称呼一种系统平台时将二者结合起来,如 X86_Linux,表示在 x86 平台上运行 Linux 系统,MIPS Linux 表示在 MIPS 上运行 Linux 系统。
「本地编译」和「交叉编译」的关系是什么?
本地编译可以看成是交叉编译的子集,当源平台和目标平台一致或者完全兼容的情况下,使用本地编译。
当源平台和目标平台不兼容或者不完全兼容的情况,就使用交叉编译。
字节序是什么?
字节序,又称为端序,尾序,英文为 Endianness,字节序一般是指多个字节组成的数据中最高和最低有效位哪个存放在内存的地址低位。
大尾序是什么?小尾序是什么?
如果数据最开始的字节(最高有效位)存放在内存的低位,则称为大端序(big-endian)或大尾序,相反则为小端序(little-endian)或小尾序。
大端小端无好坏之分。
./configure 的 3 个命令参数的解释是什么?
./configure --build=编译平台 --host=运行平台 --target=目标平台 [各种编译参数]
Mach 内核的机制是怎样的?
Mach 微内核仅仅包括了建立一个内核必须的几个部分,如线程管理,地址空间和进程间通信等。而设备驱动、文件系统以及内存管理等内核相关的功能都包含在 Hurd 中,他们以大量的服务程序的形式出现,并且与 Mach 内核进行交互,再由 Mach 进行服务间的交互,从而形成操作系统内核的基本功能。
微内核这样设计的好处是,可以在操作系统运行的过程中增加活着减少内核的部分功能,如驱动模块的加载和卸载。
单微内核的缺点也比较明显:微内核这种类似进行间的通信方式导致了许多内核模块之间的相互通信开销较大,大量的通信开销对整个操作系统性能降低会有比较大的影响。
GNU/Hurd 系统的基本组成形式
事实上,GNU 操作系统原本预期的核心是 Hurd 而不是 Linux,但是基于 Mach 设计的 Hurd 异常复杂,发展进度相对缓慢,因此之后的 Linux 系统不断的发展壮大,而 Hurd 却越来越不为人所知了。

Hurd 系统的主要组成目录是什么?
/boot
用于存放启动内核以及启动内核相关的文件。
/bin
普通命令存放目录
/sbin
管理系统相关的命令存放目录
/include
编译软件包时默认的头文件存放目录
/hurd
Hurd 系统专用命令存放目录,用来存放 Hurd 内核服务层命令
/dev
设备文件存放目录
/home
用户目录,除了 root 用户外其他可登录用户的主目录。
/etc
各类配置文件存放目录
/lib
各种函数库文件存放目录
/libexec
存放了一些非用户直接使用的脚本或者命令,这些脚本和命令一般由命令调用或者在函数库中进行调用,如与启动过程相关的一些特殊脚本或者命令。
/servers
存放内核服务层处理相关的文件。
Hurd 系统与 Linux 系统在目录文件上有什么不同?
Hurd 系统不使用 /usr 目录,而 Linux 系统中,/usr 目录中会存放大量的命令、函数库以及共享的各种文件,这些文件在 Hurd 系统中直接存放在根目录下的对应目录中。
如存放编译用的头文件在 Linux 系统中存放在 /usr/include 目录中,而在 Hurd 系统中则存放在 /include 目录中。
怎么知道编译的软件有没有问题?
许多软件包在编译后可以通过 make check 或者 make test 命令来测试编译结果是否正确,如果测试通过则说明编译的程序没有问题。
《手把手教你构建自己的 Linux 系统》学习笔记(5)的更多相关文章
- 《手把手教你构建自己的 Linux 系统》学习笔记(10)
目录 /etc/fstab 文件的作用是什么? Linux 内核的图形化启动是怎么回事? Linux 系统中的文件名是否以大小写来进行区别? 「GRUB 中无法找到硬盘」怎么解决? 「GRUB 及配置 ...
- 《手把手教你构建自己的 Linux 系统》学习笔记(9)
目录 autoreconf 命令的作用是什么? aclocal automake -a autoconf 一条命令搞完三面三步 既然有其他的「编译控制软件」为何还是使用 make 来进行编译控制? M ...
- 《手把手教你构建自己的 Linux 系统》学习笔记(8)
目录 Binutils 软件包有什么用? make -k 的作用是什么? man-pages 里有几种文档?分别表示什么意思? 如何查询指定目录的 man-pages ? 如何使用 make 命令的同 ...
- 《手把手教你构建自己的 Linux 系统》学习笔记(6)
目录 /dev 目录是干什么的? /proc 和 /sys 目录是干什么的? udev 这个软件是干什么用的? 目录映射是临时性的,还是永久性的? 命令行里大括号 "{}" 的作用 ...
- 《手把手教你构建自己的 Linux 系统》学习笔记(2)
Linux 系统定制原理 虚拟根目录 我们的目标是为了完成目标系统(也就是我们要做的系统),他是一个可以独立运行的系统,不依赖雨主系统和临时系统,根据 Linux 系统的特点它需要存放在根目录下面,但 ...
- 《手把手教你构建自己的 Linux 系统》学习笔记(1)
第二章.基础准备--Linux 系统定制原理 Linux 系统的组成及架构 共享库和静态库 在 Linux 系统中,函数库包含两种形式:共享库和静态库. 共享库 共享库在程序运行时,为其提供所需要的函 ...
- 《手把手教你构建自己的 Linux 系统》学习笔记(7)
目录 tee 命令的缺陷是什么?如何解决这个缺陷? /etc/ld.so.conf 文件的作用是什么? 动态链接和静态链接有什么不同? 动态编译 静态编译 共享库为什么会有版本?共享库的版本升级原理是 ...
- 《手把手教你构建自己的 Linux 系统》学习笔记(4)
汇编链接器(Binutils) 这是一个软件包,这个软件包其实是一个工具集,里面含有了大量的用于汇编程序活着读取二进制文件相关的程序. CC 它是一条命令的别名,这条命令的作用是使用 GCC 的 C ...
- 《手把手教你构建自己的 Linux 系统》学习笔记(3)
需要注意的是,制作操作系统权限全程都要用 root pushd 和 popd 为了方便目录管理,所以出现了这种两个命令,他们的原理就是利用堆栈来实现目录管理. 这两个命令,pushd 负责将指定的目录 ...
随机推荐
- BBOTSTRAP
Bootstrap 第一步:下载 第二步: 解压缩 第三步:引入(head内部 link引入) Bootstrap 全局样式 移动设备优先:<meta name="viewport& ...
- Python - Unittest小结
一.Unittest 单元测试框架,可用于自动化测试用力组织,执行,输出结果 二.Unittest构成 Test Case Test Suite Test Fixture Test Runner (图 ...
- 笔记常用Linux命令(三) 查看服务器日志
服务器日志 用于记录服务器的运行情况 查看服务器日志 tail:查看后面几行 n 显示行数 f 持续侦测后面的内容,查看服务器日志常用 查看最新的服务日志(静态) 命令格式:tail -n 行数 日志 ...
- PyCharm安装和使用教程(Windows系统)
说明: PyCharm 是一款功能强大的 Python 编辑器, 本文简单的介绍下PyCharm 在 Windows下是如何安装的. PyCharm 的下载地址:http://www.jetbrain ...
- spring源码系列(一):使用Gradle构建spring5源码的一些坑和步骤
源代码github: https://github.com/spring-projects/spring-framework.git 一 修改项目配置文件中gradle版本和地址 替换成本地安装的版 ...
- flask插件全家桶集成学习---持续更新ing
不得不说flask的设计要比django要小巧精妙的多了,没有那么臃肿,只保留核心功能,其他的都需要自己引入,即各种各样的插件来满足我们的需求,我这里记录一下自己学习项目中用的插件使用方法和一些技巧总 ...
- Vue 常用三种传值方式
Vue常用的三种传值方式: 父传子 子传父 非父子传值 引用官网一句话:父子组件的关系可以总结为 prop 向下传递,事件向上传递.父组件通过 prop 给子组件下发数据,子组件通过事件给父组件发送消 ...
- VS debug下为什么多此一举jmp函数地址?
VS debug下为什么call 函数后,会jmp函数地址?多此一举? http://blog.csdn.net/viper/article/details/6332934 在写跑在main之前的时候 ...
- CCF_201403-1_相反数
按绝对值排序,因为没相同的数,直接遍历比较一遍即可. #include<iostream> #include<cstdio> #include<algorithm> ...
- char *p=new char[n] delete[] p出错
上面不delete不出错然后下面单个输入出现乱码