导航:首页 > 源码编译 > 编译完整操作系统

编译完整操作系统

发布时间:2022-04-30 02:22:15

㈠ 如何编译一个操作系统内核

戏台演戏,

㈡ 如何自己编译linux操作系统

可以搜索Linux from scratch,那里就有教你怎样从源代码制作一个可用的Linux发行版的教程,全英文的。

㈢ 如何从零开始写一个简单的操作系统

(一)OS说明
今后,我就要开始折腾操作系统,有了一点小小干劲。

我的计划是,先看过一份用于教育目的的系统源码,再去翻找相应的资料(我手头已有绿宝书),在翻资料的同时开始写代码,然后做好移植真机的工作,DONE!
我也明白,理性很丰满,现实很骨感,这过程不会如同我计划中这般简单和轻松。但是,见难而退可不是我的风格(那样我会被红叶二小姐调戏的),不管如何,我都会,怎么说呢,尽力吧。

出于课程需求,斯坦福那些人亲自写了一个名为“pintos”的系统。pintos的结构比较简单,分为进程管理、文件系统、用户程序、虚拟内存等几个部分,也正是因为这个原因,我选择pintos作为我的参考蓝本,现在在读它的源码。

在接下来的几个月时间里,不出意外的话,我会不断的在博客上更新我的进度。

(三)交叉编译环境
倘若我们要在ubuntu上编译另外一个完整的OS,交叉编译环境是必不可少的玩意,维基网络有云:

交叉编译器(英语:Cross compiler)是指一个在某个系统平台下可以产生另一个系统平台的可执行文件的编译器。
(想起以前,我为了给路由器编译OPENWRT,下载大量源码,愣是编译了几天几夜。那时候的我,真是“可爱”。)
为了配置好交叉编译环境,我废了好大力气,最后勉强找到了组织。
编译环境大致分为2部分,binutils和gcc。我先装好gcc-4.9.1,之后下载gcc-4.9.1和binutils-2.25的源代码,似乎gcc版本与binutils版本要对应来着…

开始编译之前,需要准备全局变量(在命令行中敲入以下命令):

export PREFIX=”$HOME/opt/cross”
export TARGET=i686-elf
export PATH=”$PREFIX/bin:$PATH”
编译Binutils
cd $HOME/binutils-2.25
mkdir build-binutils
cd build-binutils

#注意是在源码目录下面新建一个文件夹,然后cd到该文件夹里,然后才配置configure,不这么做的话,嘿嘿..
../binutils-x.y.z/configure –target=$TARGET –prefix=”$PREFIX” –with-sysroot –disable-nls –disable-werror
make
make install
–disable-nls 告诉binutils,不要添加本地语言支持

–with-sysroot 告诉binutils,在交叉编译器中允许sysroot

编译GCC
cd $HOME/gcc-4.9.1
mkdir build-gcc
cd build-gcc

#注意是在源码目录下面新建一个文件夹,然后cd到该文件夹里,然后才配置configure,不这么做的话,嘿嘿..
../gcc-x.y.z/configure –target=$TARGET –prefix=”$PREFIX” –disable-nls –enable-languages=c,c++ –without-headers
make all-gcc
make all-target-libgcc
make install-gcc
make install-target-libgcc
–disable-nls 告诉GCC,不要添加本地语言支持。

–without-headers 告诉GCC,不要依赖任何本地库,我们必须在自己的OS中实现库。

–enable-languages 告诉GCC,不要支持除了C、C++之外的语言。

提醒
不同机器配置不同,编译速度也不同。

编译这两个软件,我花了近3个钟,机器配置之低自不必说,说了都是泪。

如果任何人的任何编译过程出了任何问题,请仔细地、认真地、用心地再看看上面的命令,在你没有弄懂它的原理之前,请不要擅自做任何“改进”(血淋淋、赤裸裸的教训呀)。

(五)OS模糊框架
翻完了手头的绿宝书,我才晓得,人都是被逼出来的。

操作系统的概念都差不多已经知道,接下来,该由“理论态”切换到“实践态”了喔(书还是不能看太多,会中毒的–)。

对了,从别人推荐的地方弄来了一个框架(曾在android平台写了几万代码,我深深体会到框架的作用),轻松开工吧。

㈣ 操作系统是怎么编译的

电脑上有相关的编译器,比如linux上有GCC是编译C语言的!把你写好的代码编译成计算机能执行的代码.windows上有VS,VC,不过这几个都是集成开发环境,包括编译器,编辑器等!

㈤ C语言编译操作系统的什么部分,编译一个系统都需要编译什么系统文件,让系统能够运行

C编译器可以理解为开发工具,按照你说的,操作系统是C语言开发的,那用什么开发它呢,用的就是C编译器吧(不止编译器,编译器只是很少的一部分,这里用它代替开发环境),C编译器要装在电脑的操作系统上吧,然后你在装有编译器的操作系统下完成了另一个操作系统的开发,然后将你完成的这个操作系统安装在另一台机器上,然后你的C开发的操作系统就运行了。所以说,C编译器是运行在需要开发C程序的操作系统下的,这里你可以把你用C语言开发的操作系统认为是一个C程序。你在开发C程序而已,那这样你就该知道你的C编译器运行在什么上面了吧。

阅读全文

与编译完整操作系统相关的资料

热点内容
算法期中试卷 浏览:939
php连接hbase 浏览:815
服务器的威胁性应该是什么等级 浏览:827
3d打印机的算法原理 浏览:481
腾讯云通信服务器 浏览:889
minecraft最可怕服务器地址 浏览:274
程序员选专业有必要吗 浏览:32
如何重装rpc服务器 浏览:637
程序员必备的app 浏览:167
电动汽车加密币 浏览:962
xp支持多少层文件夹 浏览:650
阿里云服务器防御指标 浏览:895
cc网络编程学习 浏览:460
单片机又叫微控制器对吗 浏览:662
安卓软件商店如何评分 浏览:657
linuxexecv 浏览:616
苹果照片视频文件夹 浏览:392
cdes加密解密算法 浏览:752
app发版如何让运营及时配活动 浏览:801
python结束界面 浏览:485