交叉编译是什么?

交叉编译就是在一个系统上,编译生成另外一个系统运行的程序文件。

「硬件体系结构」和「操作系统」的关系是什么?

硬件体系结构也可以称为架构,主要是通过 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)的更多相关文章

  1. 《手把手教你构建自己的 Linux 系统》学习笔记(10)

    目录 /etc/fstab 文件的作用是什么? Linux 内核的图形化启动是怎么回事? Linux 系统中的文件名是否以大小写来进行区别? 「GRUB 中无法找到硬盘」怎么解决? 「GRUB 及配置 ...

  2. 《手把手教你构建自己的 Linux 系统》学习笔记(9)

    目录 autoreconf 命令的作用是什么? aclocal automake -a autoconf 一条命令搞完三面三步 既然有其他的「编译控制软件」为何还是使用 make 来进行编译控制? M ...

  3. 《手把手教你构建自己的 Linux 系统》学习笔记(8)

    目录 Binutils 软件包有什么用? make -k 的作用是什么? man-pages 里有几种文档?分别表示什么意思? 如何查询指定目录的 man-pages ? 如何使用 make 命令的同 ...

  4. 《手把手教你构建自己的 Linux 系统》学习笔记(6)

    目录 /dev 目录是干什么的? /proc 和 /sys 目录是干什么的? udev 这个软件是干什么用的? 目录映射是临时性的,还是永久性的? 命令行里大括号 "{}" 的作用 ...

  5. 《手把手教你构建自己的 Linux 系统》学习笔记(2)

    Linux 系统定制原理 虚拟根目录 我们的目标是为了完成目标系统(也就是我们要做的系统),他是一个可以独立运行的系统,不依赖雨主系统和临时系统,根据 Linux 系统的特点它需要存放在根目录下面,但 ...

  6. 《手把手教你构建自己的 Linux 系统》学习笔记(1)

    第二章.基础准备--Linux 系统定制原理 Linux 系统的组成及架构 共享库和静态库 在 Linux 系统中,函数库包含两种形式:共享库和静态库. 共享库 共享库在程序运行时,为其提供所需要的函 ...

  7. 《手把手教你构建自己的 Linux 系统》学习笔记(7)

    目录 tee 命令的缺陷是什么?如何解决这个缺陷? /etc/ld.so.conf 文件的作用是什么? 动态链接和静态链接有什么不同? 动态编译 静态编译 共享库为什么会有版本?共享库的版本升级原理是 ...

  8. 《手把手教你构建自己的 Linux 系统》学习笔记(4)

    汇编链接器(Binutils) 这是一个软件包,这个软件包其实是一个工具集,里面含有了大量的用于汇编程序活着读取二进制文件相关的程序. CC 它是一条命令的别名,这条命令的作用是使用 GCC 的 C ...

  9. 《手把手教你构建自己的 Linux 系统》学习笔记(3)

    需要注意的是,制作操作系统权限全程都要用 root pushd 和 popd 为了方便目录管理,所以出现了这种两个命令,他们的原理就是利用堆栈来实现目录管理. 这两个命令,pushd 负责将指定的目录 ...

随机推荐

  1. django 启动错误:Generator expression must be parenthesized 错误信息:

    错误为: Unhandled exception in thread started by <function check_errors.<locals>.wrapper at 0x ...

  2. 线段树+Lazy标记(我的模版)

    #include <bits/stdc++.h> using namespace std; typedef long long ll; typedef unsigned long long ...

  3. Shiro Web集成及拦截器机制(四)

    Shiro与 Web 集成 Shiro 提供了与 Web 集成的支持,其通过一个 ShiroFilter 入口来拦截需要安全控制的 URL,然后进行相应的控制,ShiroFilter 类似于如 Str ...

  4. 通过 SCF Component 轻松构建 REST API,再也不用熬夜加班了

    本教程将分享如何通过 Serverless SCF Component .云函数 SCF 及 API 网关组件,快速构建一个 REST API 并实现 GET/PUT 操作. 当一个应用需要对第三方提 ...

  5. Idea-LifecycleException when deploying

    案例 今天第一次用idea构建项目,出现了如下问题: FAIL - Application at context path /myWebApp could not be started FAIL - ...

  6. CUDA学习(二)之使用clock()函数

    clock()函数是C/C++中的计时函数,相关的数据类型是clock_t,使用clock函数可以计算运行某一段程序所需的时间,如下所示程序计算从10000000逐渐减一直到0所需的时间. #incl ...

  7. JSP&Servlet学习笔记----第1/2章

    HTML(HyperText Markup Language):超文本标记语言 HTTP(HyperText Transfer Protocol):超文本传输协议 URL(Uniform Resour ...

  8. HDU 1251 统计难题 (Trie树模板题)

    题目链接:点击打开链接 Problem Description Ignatius最近遇到一个难题,老师交给他很多单词(只有小写字母组成,不会有重复的单词出现),现在老师要他统计出以某个字符串为前缀的单 ...

  9. 微信小程序中的图表构建

    第一 html中的代码 <view class="container"> <canvas canvas-id="lineCanvas" bin ...

  10. Go语言实现:【剑指offer】从上往下打印二叉树

    该题目来源于牛客网<剑指offer>专题. 从上往下打印出二叉树的每个节点,同层节点从左至右打印. 不需分层,一维数组. Go语言实现: /** * Definition for a bi ...