05-11-07, 17:02
大前提,不牵涉到开发驱动。
单就控制台下面的应用开发(单进程)来说,几乎是一样的。不同的是,win32下面的控制台应用较少支持信号这种进程通信方式,好像只支持POSIX标准当中的3个吧,SIGINT,SIGTERM什么的。
Win32的控制台也不能支持fork创建新进程。也就是win32的多进程的实现又和linux有大不同。会用到CreateProcess函数。
如果就开发标准windows应用来说。差别是巨大的。Linux不像Windows有内嵌的消息队列机制,Linux的消息队列要通过IPC才能实现。并且用户接口图形库上,Linux的API特别的多大大超过windows的为大家耳熟能详的那种DC(设备上下文)方式。有基于X11的,也有基于Framebuffer的,更上一层的就是QT,GTK,SDL,DFB等。
如果要开发多线程应用,差别就更加大了。pthread那一套东西,在win32竟然派不上用场。
对于网络应用开发来讲,主要是Socket的编程。虽然BSD的那套API在windows上也能用。但从winsock 2.0开始,微软大大扩展了winsock的API。复杂度远远超过了Linux。
另外还有一个重要的一块,就是COM的开发。现代的Windows较多的采用了组件对象模型来进行模块开发,甚至一些驱动也是用COM开发的。但是COM在Linux的世界里只是很小的支流。不能成为气候。
另外从游戏开发的领域来看,Linux也不支持D3D的API,主要也因为D3D是基于COM的吧。所以Linux的游戏开发就只能以OpenGL单腿行走。而不像windows两种3D图像API都可以使用。
大概这么一说,大家可能会有这样的认识:其实在Linux下开发的复杂度远远小于Windows的。我也是这样的认为。
单就控制台下面的应用开发(单进程)来说,几乎是一样的。不同的是,win32下面的控制台应用较少支持信号这种进程通信方式,好像只支持POSIX标准当中的3个吧,SIGINT,SIGTERM什么的。
Win32的控制台也不能支持fork创建新进程。也就是win32的多进程的实现又和linux有大不同。会用到CreateProcess函数。
如果就开发标准windows应用来说。差别是巨大的。Linux不像Windows有内嵌的消息队列机制,Linux的消息队列要通过IPC才能实现。并且用户接口图形库上,Linux的API特别的多大大超过windows的为大家耳熟能详的那种DC(设备上下文)方式。有基于X11的,也有基于Framebuffer的,更上一层的就是QT,GTK,SDL,DFB等。
如果要开发多线程应用,差别就更加大了。pthread那一套东西,在win32竟然派不上用场。
对于网络应用开发来讲,主要是Socket的编程。虽然BSD的那套API在windows上也能用。但从winsock 2.0开始,微软大大扩展了winsock的API。复杂度远远超过了Linux。
另外还有一个重要的一块,就是COM的开发。现代的Windows较多的采用了组件对象模型来进行模块开发,甚至一些驱动也是用COM开发的。但是COM在Linux的世界里只是很小的支流。不能成为气候。
另外从游戏开发的领域来看,Linux也不支持D3D的API,主要也因为D3D是基于COM的吧。所以Linux的游戏开发就只能以OpenGL单腿行走。而不像windows两种3D图像API都可以使用。
大概这么一说,大家可能会有这样的认识:其实在Linux下开发的复杂度远远小于Windows的。我也是这样的认为。