Ports

在 Windows 底下要安装新的应用程式时,通常就是执行一下 SETUP.EXE ,选选安装目录,回答几个简单问题,然後 SETUP.EXE 就会帮你把该做 的事做好。但是在 UNX 的世界里通常不是就不是这麽简单了,除非你 买的是商业软体,不然一般你拿到的会是一包一包的 source code,而 不是现成弄好的可执行档。 在 Windows 的世界里,一方面因为应用程式是一个个的商品,为了商品 的利益,厂商不可能把形同命脉的 source code 丢出来给你;另一方面 也因为 Windows 就只在 Intel 系列的平台上面执行(当做没有 NT 可 以在 Alpha 上面跑这一回事存在 :P ),它就不需要考虑编成 binary 後在不同平台上面的适应性。反观 UNX 的世界,UNX 是架构在各式各 样不同的平台上面,你绝对没办法用同一套 binary 吃遍所有的系统。 而且在 UNX 世界中,许多程式的作者并不把能从他写的程式获得多少 利益摆在最重要的位置,而是希望他所写的程式能让更多的人受惠,并 希望他的程式能变好,所以他们会把 source code 放出来,大家一 起来集思广益,让程式更好。 在 UNX 下的程式,一般都是用 C 语言来写的。虽然 C 语言有它的标 准,而且本身已经有很好的可携性,但是在不同的 UNX 系统下,却还 是会有 "大同小异" 的问题存在。虽然整个程式的大体架构、语法大致 相同,但是不同的系统间还是有些小小的差异,比如说 head file 的不 同啦、资料型态资料大小的不同啦、系统目录结构的不同啦....etc。因 为这些大同小异,所以即使你在一个系统上面写的程式能在这个系统上 面正常的 compile,正确的执行,但是拿到另一个系统上面却未必行得 通,通常必需视不同的系统做不同的修改。这种把 A 系统上面可以正常 运作的程式,弄成在 B 系统上面也能正常运作的工作,就称为 "PORT" 。 简单的 PORT 可能改改目录位置,加上几个 #ifdef 之类的东东就可以 解决了,但是有时候如果遇到像是程式和系统的关连太深、程式用到一 些 A 系统内部提供但 B 系统却没有的功能时,那 PORT 的工作就不是 那麽简单了。但是,如果你选用了 Free

Published At
Categories with 服务器类
Tagged with
comments powered by Disqus