从Windows的角度看Mac OS X上的软件开发

从Windows的角度看Mac OS X上的软件开发,第1张

Windows及Mac OS X在 *** 作系统架构、开发环境、API、图形环境等环节上的相近处与不同的地方,也简单提出了跨平台应用程序开发的两种策略。事实上在两种平台上开发所需要了解的概念跟技能没有太大的不同,两种平台在性能上的差异也不大。大体说来,Windows和Mac OS X都是为桌面应用环境、图形用户接口(GUI)而设计的 *** 作系统。虽然不同平台细节各有特色,但两者相近的抽象概念,其实远远多于相左之处。本文试图指出方向上明显的异同所在,而非详细列举各种细项差别。最后,我也将简短分享自己在开发跨平台软件时的一些技巧和心得。

系统架构与开发环境的差异

用最简单的话来说,Mac OS X与Windows在架构与开发环境上最大的不同点在于:OS X是UNIX也不是UNIX;OS X主要开发工具Xcode使用GCC作为编译程序,与其他种类的UNIX相同;不过OS X也有独树一格的"bundle"软件包装格式这样的东西,成为它与其他 *** 作系统不同之处。

Windows和OS X都属于现代的 *** 作系统,所以Windows在 *** 作系统层级所提供的功能──执行文件与链接库加载、多任务与多线程、内存管理──在OS X上都找得到对等的API和作法。不过,相较于Windows在微软独力开发下,架构和API都维持着相对的一贯性(另一方面,也背负着各种历史遗迹和向下相容的包袱),Mac OS X则是底层源自NeXTSTEP的Mach微核心(现在称为XNU),而应用层(用准确的UNIX术语来说叫userland)来自FreeBSD 4。这件事情相当重要:OS X透过这样的`架构,才拥有和一般Linux/FreeBSD相似的UNIX应用环境。有相当多Mac软件开发者喜欢在UNIX shell下工作,使用各种UNIX工具。在Windows上,必须加装Cygwin之类的环境才能办到。

Apple几年前有则广告是「把其他牌子的UNIX送进/dev/null里」(用过UNIX的朋友应该不难体会其中的吹嘘意涵)。平心而论,OS X受益自UNIX环境之处不少。尤其,Apple使用了大量的open source工具。举例来说,Apple不像微软,没有自己的C语言编译工具,Apple用的是UNIX业界的标准──open source的GCC(其中当然有不少OS X的扩展功能就是)。虽然Apple有自己的开发环境Xcode,但是底层采用GCC这件事对开发者来说是相当重要的。同时,Apple的C/C++链接库用的也是GCC标准的stdc/stdc++。了解这个差异,在遇到与Microsoft C/C++ compiler不同的地方时,就更容易能找到解答的资源(这类型问题往往不限于OS X,其他UNIX平台也会发现)。

但是Mac OS X并不完全是UNIX。它的GUI环境(Aqua)就完全不是一般Linux/FreeBSD所使用的X11。而在UNIX层之下的微核心也和其他UNIX不同。接下来这一点很重要:OS X虽然有和Windows .EXE和.DLL相对应的文件(OS X跟其他UNIX一样,可执行文件一般不加扩展名,UNIX系的动态加载链接库则冠以.dylib),但更重要的架构差异是bundle。

Bundle概念承袭自NeXTSTEP。简单来说,就是由 *** 作系统提供一种类似对象封装的文件包裹。OS X上最常见的bundle要属.app结尾的应用程序了。虽然.app外观上是个文件,在UNIX shell下看就能发现它其实是个目录,内含各种metadata(通常至少会有一个名为Info.plist的数据文件)、可执行文件、动态链接模块、各种资源等。除了.app外,OS X的各种框架档(以.framework结尾,是一种同时包含头文件及链接库的包装)、应用程序的外挂模块(通常以.bundle结尾)等等,都是以bundle形式呈现的。了解这个差异,才能了解为什么OS X上很少有程序需要额外的安装程序,也鲜少听说有所谓的"DLL hell"(因共享链接库版本不兼容造成的困扰)。

多的IT经理停滞了他们对系统的更新的需求,他们希望在自己的PC升级上配合他们的Windows 7部署。"

一旦Windows 7开始了面向公众的发布,使IT店铺部署Windows XP的比率毫无疑问将出现下降。在其发布的18个月中,或者说在第一个Windows 7版本服务包的发布之后,"OEM许可证与每台PC的绑定将不再进行面向Windows XP的降级。"这就是说,基本上,在企业或SMB(中小型企业)内部署的XP将需要在未使用任何属于Windows XP的批量许可证或购买XP的批量许可证复制从而使用XP。这增加了一个额外的步骤,面向采购过程的IT管理人员可能不愿意参加。

对于Windows XP的支持也将结束,这对那些想继续使用旧版 *** 作系统的IT部门来说增加了不小的复杂性。对Windows XP SP 2、SP 3进行扩展支持的服务将于2014年4月结束,在该日期之后将不再有任何面向XP的更新或补丁。

1、打开Launchpad里面的其他文件夹,打开终端。

2、使用vim新建一个c++程序文件,例如test.cpp。

3、编辑你的c++代码,然后保存退出。

4、也可以使用第三方的代码编辑软件,如Sublime Text编辑代码。

5、使用g++命令来编译c++程序,如果编译成功,则没有任何提示,如果失败,会出现程序错误的提示。

6、直接执行刚刚编译的c++程序即可。

有很多种,主要是看个人喜好,可以用终端的vim来编写,用g++编译,可以用emacs,Visual Studio Code,Sublime Text,Xcode等等……

这里我倒是比较推荐Xcode,一个是苹果自家的IDE,功能强大,再来就是支持原生C语言,调试编译都挺方便的。

其实Linux/Unix这类的系统,你喜欢的话用自带的文本编辑器都可以写,当然编译还是需要借助g++,但是你如果想的话,你可以这么做。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/11128593.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-13
下一篇 2023-05-13

发表评论

登录后才能评论

评论列表(0条)

保存