LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 821|回复: 5

操作系统与软件开发有多大关系?

[复制链接]
发表于 2006-5-16 11:26:29 | 显示全部楼层 |阅读模式
一直以来我都没弄明白一个问题,就是操作系统与软件开发的关第到底有多大。如果是Windows开发,我知道使用了大量的API接口,所以Windows下开发的程序在LInux下不能使用(大部分),但如果我在Linux下开发的程序在Windows下是不是就能使用呢?Linux的开发到底是不是也要用到Linux的API呢?

我们开发一般使用C、C++、Java等,这些语言与操作系统是没有关系的,按理讲,操作系统只是一个平台,应用软件只要编译成Exe(或其它)文件后,就应该是可执行的,但看大家在讨论开发时,都是说Linux开发,Windows开发,是不是所有开发都离不开操作系统的底层(我是指程序代码里,不是指程序运行)?
发表于 2006-5-16 12:37:59 | 显示全部楼层
开发gtk,qt的程序在windows下面就还能用。
用了gnome,kde的lib就不能了。
回复 支持 反对

使用道具 举报

发表于 2006-5-16 12:49:42 | 显示全部楼层
现代操作系统都一般都是分为用户层和内核层
很多操作只能由内核来完成
用户层程序通过系统调用来请求内核完成某个任务,比如打开文件,写入文件
系统调用是因系统而异的
一般来说编程语言级别越低,和系统关联越紧密,就越不可移植。
汇编就不用说了。
即使是C,在Linux与windows之间,也是有不可逾越的鸿沟。Linux和其他类UNIX系统之间情况会好很多。

还有一个要考虑的问题是图形界面程序。每个系统都有自己独有的图形界面库。一般写图形界面程序,都要选定一个图形界面库来写。这样的话,如果目的系统上没有这个库,自然就不能移植。这样就只能用目的系统上专有的库来写。
回复 支持 反对

使用道具 举报

发表于 2006-5-16 13:08:35 | 显示全部楼层
可执行文件的格式都不一样,谈何通用!
linux采用的ELF格式的资料可以google到,windows好像是elf的一个变种还是什么来着。
回复 支持 反对

使用道具 举报

发表于 2006-5-16 13:11:46 | 显示全部楼层
Post by 种草得草
开发gtk,qt的程序在windows下面就还能用。
用了gnome,kde的lib就不能了。

所谓的兼容性是指源代码的兼容性,而不是二进制兼容,在linux下写的c代码可能会在windows下编译成功,前提是windows提供了该c程序所调用的api或者库,但是linux下编译好的二进制程序绝对不可能在windows下跑起来,gtk,qt也不行。
回复 支持 反对

使用道具 举报

发表于 2006-5-16 13:59:41 | 显示全部楼层
Post by bywind
可执行文件的格式都不一样,谈何通用!
linux采用的ELF格式的资料可以google到,windows好像是elf的一个变种还是什么来着。

我想这个问题还不至于有人会往编译好的可执行程序上想吧。跨平台可编译,编译好之后可执行,就不错了。
Windows的是PE,是coff改进的。
Linux以前还有a.out
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表