关于编程,软件兼容,linux 以及windows 的问题

来源:百度知道 编辑:UC知道 时间:2024/06/07 01:10:40
windos linux 的核心程序 都是用c c++ 写的么?

为什么有的程序 不能正常运行在 linux 上 却能运行在 windows 上?

都是c 语言写的程序 也会这样么 ?

是不是 java 写的东西 能够兼容?

Windows NT和Linux的内核都是用C写的。

一个程序不能运行在不同的平台下是因为系统提供的API接口不一样。而编译好的程序是使用了特定的执行程序结构(例如Windows下是PE)及调用了不同的API集。更具体来说,Windows有自己API(Win32),Linux有另外一套不同的API(POSIX兼容),所以一般直接调用系统API的程序是不能在不同平台运行的。
对於C语言的程序,如果你是完全只使用标准库的功能来写,一般是可以在不同平台下可移植的。但可移植的要求是在相应平台下重新编译程序,为单一平台编译的程序是还是无法在不同平台执行的。因为最终C的标准库函数在各自平台下其实都会被编译成调用平台专有的API。

Java之所以可以写一次以及编译一次就能在全平台下运行,是因为它不是直接调用平台专有API,而是运行在为各个平台专门开发的虚拟机上。这个虚拟机在所有平台上模拟出了一个完全相同的环境(API和系统工作逻辑)。

内核程序一般是实时性要求比较高,一般用C来写就可以了,其他的应用程序可以用C++或java他们属于面向对象的程序语言!
并不是C写的程序就可以用在任何地方,他的兼容性好是指的源代码可以在不同的平台上使用,但是在某一平台上编译后就不再通用了!! linux、windows是不同的平台