用汇编和c语言开发操作系统需要什么样的编译器?

gs272 2013-03-27 02:21:41
用汇编和c语言开发操作系统需要什么样的编译器?

不同的平台(即不同的操作系统)下用的编译器肯定是不一样的,而且做出来的系统,哪怕只有引导扇区的一小段代码,如果要在虚拟机上运行起来,该使用的编译器和一般我们平时练汇编或者c语言的编译器有什么区别。

我不是讲大话,做白日梦,只是最近开始研究linux内核,想到这方面的问题,脑子里没有一个清晰的概念哦,想弄明白这是怎么一回事。

打个比如:我有一个操作系统的源代码,用汇编和c语言写的,是完完全全跟现在已有的操作系统都不一样的,我想在windows环境下编译,然后在虚拟机上运行出来,我该怎么处理这些代码,需要哪些工具,当然主要指的是编译器!

希望大神帮帮解释下!!!!
感谢!!!!!!!!!!!
...全文
362 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
www_adintr_com 2013-03-28
  • 打赏
  • 举报
回复
gcc 编译器支持交叉编译. 也就是说, 你可以在 A 系统下编译出在 B 系统运行的程序. 即使这个两个系统的 CPU 体系不一样也可以. 像磁盘上的 loader 程序这种, 可以用 nasm 编译成纯的二进制文件, 也就是只包含指令, 没有什么文件头之类的在系统里面运行的程序所需要的东西.
mujiok2003 2013-03-28
  • 打赏
  • 举报
回复
vc的编译器是用vc开发的。
gs272 2013-03-28
  • 打赏
  • 举报
回复
综合大家的回答,那就是说只要编译出对应的二进制可执行文件就可以了?
gs272 2013-03-28
  • 打赏
  • 举报
回复
暂时还没有交叉编译的概念哦,linux内核也刚开始看而已,麻烦大神解释下交叉编译!
www_adintr_com 2013-03-28
  • 打赏
  • 举报
回复
引用 13 楼 gs272 的回复:
gcc编译出来的可执行文件是纯粹的二进制文件?x86架构的都能用?
显然不是撒, gcc 默认编译出来的肯定是当前系统的可执行文件格式. 要做交叉编译, 需要专门配置.
ForestDB 2013-03-28
  • 打赏
  • 举报
回复
LZ可有交叉编译的概念?
gs272 2013-03-28
  • 打赏
  • 举报
回复
gcc编译出来的可执行文件是纯粹的二进制文件?x86架构的都能用?
赵4老师 2013-03-27
  • 打赏
  • 举报
回复
C/C++用编译器gcc(linux)或cl.exe(windows) 汇编用汇编器。
nadleeh 2013-03-27
  • 打赏
  • 举报
回复
我最多就手写一个简单的boot,写os需要的东西太多了,编译器只是针对特定的cpu决定你选哪个,因为跑在计算机上的是一条条的指令,不同cpu指令不一样,编译器只负责把你的代码转化为一条条的指令。
Athenacle_ 2013-03-27
  • 打赏
  • 举报
回复
OS启动最重要的还是如何从MBR跳至内核二进制文件的入口点,这需要直接把汇编指令用二进制写进MBR。。 而Linux中引入了GRUB,其中就还有stage1 stage2等阶段,也只不过是stage1跳至stage2的入口而已。 看linux不要妄想把每个函数都看懂,抓住主要的,别迷失于过多的细节
Athenacle_ 2013-03-27
  • 打赏
  • 举报
回复
我想说的是,编译器并不是关键。 linux选用了gcc最主要还是因为用了gcc的语言扩展比较多。
千树之影 2013-03-27
  • 打赏
  • 举报
回复
与不同操作系统下的编译器没有关系,比如linux的gcc和windows下的vs就没有区别。
huangxiaofei 2013-03-27
  • 打赏
  • 举报
回复
汇编语言不需要编译器,需要汇编器,各个不同架构的硬件平台所用的汇编语言指令集是不一样的,平台相关性非常大;C语言的话只要是支持C语法的编译器都可以,Intel有C编译器,微软有C编译器,GNU也有自己的C编译器,无所谓用哪种都可以
千树之影 2013-03-27
  • 打赏
  • 举报
回复
开发操作系统需要的编译器取决于硬件指令集。比如开发x86机器上的操作系统和开发arm上的操作系统就需要各自平台的编译器。
gs272 2013-03-27
  • 打赏
  • 举报
回复
难道说想做任何新的操作系统都用它的编译器?编译器全是通用的,再说编译linux内核基本都是在linux环境下进行编译的。 大神,我的水平还没到举一反三的程度,麻烦说的详细点!!! 谢谢
Athenacle_ 2013-03-27
  • 打赏
  • 举报
回复
linux内核是用C和汇编开发的,用了什么编译器呢?

69,382

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧