程序如何独立于OS?

Kaw*_*iKx 3 c opengl

当我们说程序与操作系统无关时,我们究竟是什么意思?我们的意思是只要处理器相同,它就可以在任何操作系统上运行吗?

例如,OpenGL是一个独立于操作系统的库.它包含的函数必须假设一个特定的处理器.但是不是特定于操作系统的代码/程序/应用程序吗?

我学到的是:

  1. OS是特定于处理器的.

  2. 应用程序(程序/代码/例程/函数/库)是特定于操作系统的.

  3. 源代码是纯文本.

  4. 编译器(程序)是特定于操作系统的,但它可以为
    假设相同操作系统的不同处理器编译源代码.

  5. OpenGL是一个库.

因此,OpenGL必须是特定于OS /处理器的.它如何与操作系统无关?

可以与OS无关的是源代码.它是否正确?

如何知道源代码是否与操作系统无关?

leg*_*s2k 6

当我们说程序与操作系统无关时,我们究竟是什么意思?我们的意思是只要处理器相同,它就可以在任何操作系统上运行吗?

当程序仅使用已定义的行为(没有未定义,未指定或实现定义的行为)时,程序将受到语言标准(在您的C语言标准中)的保护,以便编译(使用符合标准的编译器)并在所有操作上统一运行系统.

基本上你要明白像C语言这样的语言标准或者像OpenGL这样的库标准给出了程序员可以制作和构建的一组最小的可伪装的保证.只要编译器对标准的投诉(在库的情况下,实现是标准编译)并且程序不在未定义的行为域中进行操作,这些将不会改变.

openGL必须是特定于OS /处理器的.它如何与操作系统无关?

不,OpenGL与平台无关.OpenGL 实现(实现调用的驱动程序)绝对是平台和GPU特定的.说C标准是由GCC,MSVC++等实现的,它们都是可以编译C代码的不同编译器实现.

可以与OS无关的是源代码.它是否正确?

源代码(如果为可移植性而编写)只是众多此类平台独立实体中的一个.库(OpenGL等),框架(.NET等)等也可以与平台无关.就此而言,甚至硬件也可由某人指定并由其他人实施:ARM处理器是ARM​​制定的标准/规范,由高通,TI等OEM实施.

我们的意思是只要处理器相同,它就可以在任何操作系统上运行吗?

只要您仅使用跨平台组件来构建程序,处理器和平台(OS)都无关紧要.假设您使用C,一种可移植的语言; SDL,一个用于创建窗口,处理事件,帧缓冲等的跨平台库; OpenGL,一个跨平台的图形库.现在你的程序将在多个平台上运行,即使这样,它依赖于最薄弱的环节.如果SDL不在某些仅限J2ME的手机上运行,​​那么它将没有该平台的库分发,因此您的应用程序将不会在该平台上运行平台; 所以在某种意义上,没有什么是独立的.因此,最好使用可用于不同体系结构,平台,编译器等的各种库,然后根据您所针对的平台选择所需的库.