㈠ 操作系统的代码是由谁编译的,执行的
操作系统的代码也是用某种语言写和程序,所以由对应语言的编译器编译(如果是汇编语言程序,就由汇编程序进行汇编),执行当然是由CPU来做了!
㈡ 普及知识!跪求答案! 操作系统是怎么开发、编译(怎么编译的)并且运行在设备上(这个问题的意思是
就我知道的向你说一说:
1,操作系统用的是c语言开发的:
但这c语言和普通的c语言是有区别的,不能使用库函数。
这个c语言的编译器也和普通的编译器有区别的。《30天自制操作系统》-用的是开源的c编译器并且经过修改的。
2,第一扇区的bootstrap
bootloader或者说bootlstrap是用汇编语言写的
但是这个汇编器和拿来开发应用程序也是有区别的,
就拿汇编中的伪指令org和p应用程序的汇编编译器是无法达到想要的目的的。
如果第一扇区是启动分区,那么对应的最后两个字节为511-0x55AA
bootloader开始就是一条跳转指令0xeb开头的后面是偏移量,紧接着就是这个媒介的配置信息
,紧接着才是我们要写的16bit的汇编语言。
这里要做的事就是:
读取硬盘上的数据放到内存中准备运行,保存配置数据,由16bit实地址模式切换到32模式。。。
本人原来照葫芦画瓢画过。
但是切换到32bit下要用到内存保护机制,内存映射机制,虚拟内存机制。。。这些和计算机硬件的密切相关。无奈本人了解的计算机硬件一般都是十六位的,而且大多与概念相关。
而且对于的intel指令手册都是英文的,总而言之能力有限无法进行下去。
如果要开发操作系统,以我看:
计算机组成原理特别是32bit下的内存映射保护相关内容必须知道
汇编和c语言那时必须的会
耐心时间
推荐书籍《30天自制操作系统》
通过开发操作系统可以加深 汇编与计算机硬部件 汇编和c语言 相关连的理解。
如果你想试一试可以在虚拟机下玩一玩。
——以上内容仅供参考——
㈢ 操作系统是怎么编译的
电脑上有相关的编译器,比如linux上有GCC是编译C语言的!把你写好的代码编译成计算机能执行的代码.windows上有VS,VC,不过这几个都是集成开发环境,包括编译器,编辑器等!
㈣ 如何自己编译LINUX操作系统
编译这个难啊,还要网速允许
你可以编译
gentoo单纯的自己编译一个不属于任何现在的版本可能不是一
般人可以做到的
(1)javac:作用:编译java文件;使用方法: javac Hello.java ,如果不出错的话,在与Hello.java 同一目录下会生成一个Hello.class文件,这个class文件是操作系统能够使用和运行的文件。
(2)java: 作用:运行.class文件;使用方法:java Hello,如果不出错的话,会执行Hello.class文件。注意:这里的Hello后面不需要扩展名。
假设我有一个Hello.java文件放在D:javatest 文件夹下。
打开cmd命令窗口,会出现C:userlenovo 这里出现的是系统用户名,这里我们需要将路径转移到java文件所在目录。
紧接着输入 D:回车,会出现一下界面:
这时候我们需要定位到java文件所在目录(这里是javatest目录),接着输入 cd javatest 回车。
此时进入到D:javatest目录中,此时的Hello.java文件就在这里
这时候我们就可以用javac命令编译啦,输入javac Hello.java回车
这里如果没有任何提示表示编译成功,此时打开d:javatest文件夹你会发现此时多了一个名为Hello.class的文件,这就是操作系统能够运行的文件。
接着输入 java Hello回车,你就会看到文件被运行的结果。
第一:Hello.java中的内容是一个类,这个类的名字与.java文件名字必须完全一致。如果不一致将出错。这里当你通过eclipse创建一个类文件的时候你就会理解的更清楚了,这里不赘述。
第二:javac 和 java 命令的使用方法要注意,格式。
第三:要使用这两命令,必须配置好环境变量。
㈥ UNIX操作系统是怎么被编译的
unix下一般用gcc编译C语言,g++编译c++
编译其实是四个过程:预处理、编译、汇编、链接
由gcc这个程序执行。
gcc只是个程序,程序也就是一堆二进制码构成的东西罢了!
写个字符串变成二进制码的程序不冲突呀!
㈦ 新手学堂:Linux操作系统中如何编译C程序
登陆后用vi
写一个C程序:
过程如下:
vi
Hellolinux.c
回车
进入后选择一种输入方式(a
,i
,o);
#include
main()
{
printf(Hello
linux
!n);
}
写完程序后Esc
并保存退出(:w
保存
:q
退出)
然后用gcc
编译:
gcc
Hellolinux.c
回车
用ls
查看就会看到一个Hellolinux.out
文件,下面我们运行它;
./Hellolinux.out
回车
将会显示
Hello
linux
!
㈧ C语言编译操作系统的什么部分,编译一个系统都需要编译什么系统文件,让系统能够运行
C编译器可以理解为开发工具,按照你说的,操作系统是C语言开发的,那用什么开发它呢,用的就是C编译器吧(不止编译器,编译器只是很少的一部分,这里用它代替开发环境),C编译器要装在电脑的操作系统上吧,然后你在装有编译器的操作系统下完成了另一个操作系统的开发,然后将你完成的这个操作系统安装在另一台机器上,然后你的C开发的操作系统就运行了。所以说,C编译器是运行在需要开发C程序的操作系统下的,这里你可以把你用C语言开发的操作系统认为是一个C程序。你在开发C程序而已,那这样你就该知道你的C编译器运行在什么上面了吧。
㈨ 如何编译Linux操作系统的源代码
首先uname
-r看一下你当前的linux内核版本
1、linux的源码是在/usr/src这个目录下,此目录有你电脑上各个版本的linux内核源代码,用uname
-r命令可以查看你当前使用的是哪套内核,你把你下载的内核源码也保存到这个目录之下。
2、配置内核
make
menuconfig,根据你的需要来进行选择,设置完保存之后会在当前目录下生成.config配置文件,以后的编译会根据这个来有选择的编译。
3、编译,依次执行make、make
bzImage、make
moles、make
moles
4、安装,make
install
5、.创建系统启动映像,到
/boot
目录下,执行
mkinitramfs
-o
initrd.img-2.6.36
2.6.36
6、修改启动项,因为你在启动的时候会出现多个内核供你选择,此事要选择你刚编译的那个版本,如果你的电脑没有等待时间,就会进入默认的,默认的那个取决于
/boot/grub/grub.cfg
文件的设置,找到if
[
"${linux_gfx_mode}"
!=
"text"
]这行,他的第一个就是你默认启动的那个内核,如果你刚编译的内核是在下面,就把代表这个内核的几行代码移到第一位如:
menuentry
'Ubuntu,
with
Linux
3.2.0-35-generic'
--class
ubuntu
--class
gnu-linux
--class
gnu
--class
os
{
recordfail
gfxmode
$linux_gfx_mode
insmod
gzio
insmod
part_msdos
insmod
ext2
set
root='(hd0,msdos1)'
search
--no-floppy
--fs-uuid
--set=root
9961c170-2566-41ac-8155-18f231c1bea5
linux/boot/vmlinuz-3.2.0-35-generic
root=UUID=9961c170-2566-41ac-8155-18f231c1bea5
ro
quiet
splash
$vt_handoff
initrd/boot/initrd.img-3.2.0-35-generic
}
当然你也可以修改
set
default="0"来决定用哪个,看看你的内核在第几位,default就填几,不过我用过这种方法,貌似不好用。
重启过后你编译的内核源码就成功地运行了,如果出现问题,比如鼠标不能用,usb不识别等问题就好好查查你的make
menuconfig这一步,改好后就万事ok了。
最后再用uname
-r看看你的linux内核版本。是不是你刚下的那个呢!有没有成就感?