《手把手教你构建自己的 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 负责将指定的目录 ...
随机推荐
- MySql配置环境变量
完成后安装好MySQL,为MySQL配置环境变量. 0)在我的电脑上点击右键选择属性-->高级系统设置-->环境变量1)新建MYSQL_HOME变量,并配置:D:\Develop\mysq ...
- Python使用requests发送post请求的三种方式
1.我们使用postman进行接口测试的时候,发现POST请求方式的编码有3种,具体的编码方式如下: A:application/x-www-form-urlencoded ==最常见的post提交数 ...
- 转载: Java虚拟机:运行时内存数据区域、对象内存分配与访问
转载: https://blog.csdn.net/a745233700/article/details/80291694 (虽然大部分内容都其实是深入理解jvm虚拟机这本书里的,不过整理的很牛逼 ...
- MCMC&Gibbs sampling
Note of Markov Chain Monte Carlo and Gibbs Sampling : http://pan.baidu.com/s/1jHpWY1o 序:A major lim ...
- STM32系列之新建工程模板(三)
今天,我将记录STM32如何新建一个模板步骤 第一步:首先先新建一个文件夹(英文命名的)——作为工程根目录 第二步;在文件夹中新建一个名为USER的子目录文件 第三步:点击 MDK 的菜单:Proje ...
- 微信小程序框架分析小练手(一)——猫眼电影底部标签导航制作
旧版猫眼电影底部有4个标签导航:电影.影院.发现.我的,如下图所示: 一.首先,打开微信开发者工具,新建一个项目:movie.如下图: 二.建立如下的一些目录: 三.将底部标签导航图标的素材放到ima ...
- Pycharm2019.1.1永久破解
声明:不做商业用途,电脑系统win10专业版,亲测有效. 1,下载新版破解补丁+安装包 网盘链接 提取码:hn0u 下载补丁文件 jetbrains-agent.jar 并将它放置到 pycharm安 ...
- 刚安装了ftp之后无法使用root访问,服务器发回了不可路由的地址。使用服务器地址代替。
真的艰辛,用了整整一个下午加晚上,才把服务器搭建好,中间真的好多坑... 错误1: vsftpd正确配置: vsftpd.conf: pam_service_name=vsftpduserlist_e ...
- Flutter开发之Widget布局和页面导航
一.水平布局Row Row控件可以分为非灵活排列和灵活排列两种,灵活的可以在外边加入Expanded使用 两者混用: import 'package:flutter/material.dart'; v ...
- 【题解】P3373 【模板】线段树 2
线段树解法 好丢脸,这个题做了一下午,调试了三个多小时...... 先讲讲解题思路 既然这里是线段树,就要用到lazy-tag.又有加法又有乘法的话,就要用到两个lazy-tag,分别用数组jia[] ...