交叉编译是什么?

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

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

硬件体系结构也可以称为架构,主要是通过 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. Celery异步处理

    1.Celery概述 1.1问题抛出 我们在做网站后端程序开发时,会碰到这样的需求:用户需要在我们的网站填写注册信息,我们发给用户一封注册激活邮件到用户邮箱,如果由于各种原因,这封邮件发送所需时间较长 ...

  2. Web前端-HTML、CSS、JS

    概述 HTML是英文Hyper Text Mark-up Language(超文本标记语言)的缩写,它是一种制作万维网页面标准语言(标记).相当于定义统一的一套规则,大家都来遵守他, 这样就可以让浏览 ...

  3. SOAP与REST API的爱恨情仇

    之前一直想写些RESTful相关的文章,却一直未付诸行动.直到最近接手一个新的项目,对这块重新温习,乘此机会写些相关帖子.欢迎大家评论留言,如有错漏之处,也望各位大佬不令赐教. 话不多说,干活顶上. ...

  4. 面试总结 | Linux后台开发不得不看的知识点(给进军bat的你!)

    目录 一 自我介绍 二 面试情况 三 相关知识点汇总 1 c/c++相关 2 计算机网络 3 数据结构相关 4 数据库相关 5 操作系统 6 Linux基础知识及应用编程(后台必备!) 7 大数问题 ...

  5. Ceph 存储集群1-配置:硬盘和文件系统、配置 Ceph、网络选项、认证选项和监控器选项

    所有 Ceph 部署都始于 Ceph 存储集群.基于 RADOS 的 Ceph 对象存储集群包括两类守护进程: 1.对象存储守护进程( OSD )把存储节点上的数据存储为对象: 2.Ceph 监视器( ...

  6. js笔记(1)--第一天记录

    刚刚接触JavaScript这门语言不久,所以希望每一次都记一点东西下来,巩固下知识. 首先,写了一个demo,是来计算两个数字的和的,如果直接把 v1=text1.value,和 v2=text2. ...

  7. Python 语言规范(Google)

    Python语言规范 Lint tip 对你的代码运行pylint 定义: pylint是一个在Python源代码中查找bug的工具. 对于C和C++这样的不那么动态的(译者注: 原文是less dy ...

  8. 自学笔记系列:《Python学习手册 第五版》 -写在开始之前

    今年双十一,在当当网上买了这本书,很厚很厚的一本书,大概有将近1700页左右,的确是一个“大工程”, 关于这本书的学习,我想采用一种博客的方式进行,既是写给自己,也想分享给每一个对Python学习感兴 ...

  9. D语言-认识D语言&安装

    Part1: Something about "D" D语言在国外比较流行,在国内相当少的人才知道这个语言的存在 但是D语言有C++的效率,有Java的灵活 更重要的有两点: 1. ...

  10. Linux服务器上搭建codis集群之——安装前环境准备

    codis是redis的分布式集群模式,由豌豆荚开源,本文简单记录一下它的集群搭建方法. 首先介绍一下我的实验环境.三台配置相同的虚拟机, [root@test ~]# ip a|grep -w &q ...