跨平台开发

转载 2013年12月06日 11:39:45
1 引言
今天程序开发人员面临的最大问题就是如何使他们的应用程序支持各种不同的平台,如何使用户能够在不同的平台下不作任何修改地就能使用他们的应用程序。众所周知,linux操作系统和其它基于UNIX的操作系统一直是国际上使用广泛又非常重要的OS(Operating system)。但在中国,微软的Windows OS却占领着巨大市场,如Windows95/98、Windows2000、Windows me等OS。
那么,基于Windows OS工作的程序开发人员在实际工作中,能否重新利用其它OS上的那些免费的代码资源呢?例如像Linux那样优秀而自由的丰富代码源。
本文针对这个问题,提出了两种在Windows OS下如何运行UNIX程序和GNU程序的途径,以避免开发人员在工作中重复开发,以提高工作效率。

2 在WINDOWS下运行UNIX程序的工具——Cygwin
UNIX自20世纪八十年代就已经成为学术界和研究机构所采用的主要操作系统,并开始扩展到商业界,当时就连大名鼎鼎的IBM PC都可跑UNIX。
2.1 什么是Cygwin?
Cygwin是Cygwin公司(http://cygwin.com/)的产品,它提供了Windows操作系统下的一个UNIX环境,它可以帮助程序开发人员把应用程序从UNIX/Linux移植到Windows平台,是一个功能强大的工具集。
Cygwin由两部分组成:
(1)cygwin1.dll:它作为UNIX的一个仿真层,提供UNIX API功能;
(2)一组工具:它的功能是负责创建一个UNIX或Linux的外观界面。
Cygwin动态链接库,即cygwin1.dll可以在Windows CE以外,Windows 95以上的所有非beta版本的Windows OS下工作,如Windows 98,windows 2000等。
目前该软件的最新版本的Cygwin是1.1.x或1.3.x.可以从cygwin公司的网站上直接下载(http://cygwin.com/setup.exe)
2.2 Cygwin的功能
网络治理人员通过Cygwin可以很轻易地远程登录到任何一台PC机,在UNIX/Linux外壳(shell)下解决问题。在任何一台Windows OS计算机上运行外壳(shell)脚本命令。高级外壳脚本命令可以用标准shell、sed和awk等创建。标准Windows命令行工具甚至可以与UNIX/Linux外壳脚本环境共同治理Windows操作系统。
2.3 安装Cywin
我们以Cygwin Net Release Setup.exe Version 2.125.2.10为例(http://sources.redhat.com/cygwin)
1) 双击“setup.exe”图标;
2) “Next”进行下一步;
3) 选择安装途径: 由Internet安装;
从Internet上先下载;
由本地目录下安装;
4) 我们选择从Internet上直接安装;
5) 选择安装的根目录,默认目录为:C:/cygwin;当然,也可修改为C:PRogram FilesCygwin
6) 缺省的文本文件类型为Unix,安装所有文件。
7) 按“Next”进行下一步,安装路径中一般不包括空格,安装文件位置:C:Documents and Settingslingli桌面
8) Internet连接方式
直接连接;使用IE5设置;使用HTTP/FTP代理。
9) 选择下载站点:ftp/http://cygwin.lirex.net
10) Downloading setup.ini connecting.
3 在WINDOWS下运行GNU程序的工具——MinGW

在介绍MinGW之前,有必要先介绍一下GNU,拼读时G是不发音的。在字典中的含义是非洲大羚羊,我们可以经常看到右边这个非常个性化的羊头图1,想必很多人已经非常熟悉。象征GNU那种追求自由的精神,GNU其实是Gnu'sNotUnix的缩写,它表示GNU系统与Unix不同,但是它是与UNIX兼容的一个软件系统。由RichardStallman创建,于1984年开始逐渐累积系统构件,于1996年发布"完整GNU系统"的第一个测试版本。与UNIX不同的是,GNU不需要购买,所有需要它的人都可以免费获得,这也是设计者的初衷,自由软件拷贝,自由软件共享。


图1

3.1 什么是MinGW?
MinGW,即Minimalist GNU For Windows。它是一些头文件和端口库的集合,该集合答应人们在没有第三方动态链接库的情况下使用GCC(GNU Compiler C)产生Windows32程序。
该工具集的当前构成如图2:

在基本层,MinGW是一组包含文件和端口库,其功能是答应控制台模式的程序使用微软的标准C运行时间库(MSVCRT.DLL),该库在所有的NT OS上有效,在所有的Windows 95发行版以上的Windows OS有效,使用基本运行时间,你可以使用GCC写控制台模式的符合美国标准化组织(ANSI)程序,可以使用微软提供的C运行时间扩展。该功能是Windows32 API不具备的。下一个组成部分是w32api包,它是一组可以使用Windows32 API的包含文件和端口库。与基本运行时间相结合,就可以有充分的权利既使用CRT(C Runtime)又使用Windows32 API功能。
4 结论
本文讨论了如何在WINDOWS下重复利用UNIX代码程序和GNU代码程序的问题,提出了两种在Windows OS下如何运行UNIX程序和GNU程序的途径。这意味着,基于Windows OS工作的程序开发人员在实际工作中,将能重复利用其它OS上的那些免费而丰富的代码源。避免开发人员在工作中重复开发,提高了工作效率。 

聊聊移动端跨平台开发(后续)

上一篇博客,转载了一位大神的神级分析,仔细看完后都觉得累。想必也没几个人看完。 于是,本人又小结了一下。另外附上自己的调研结果,目前比较不错的跨平台开发框架。 1、几大流派: Web...
  • shuyou612
  • shuyou612
  • 2015年07月02日 17:59
  • 1565

为什么移动端跨平台开发不靠谱?

前言翻墙偶然读到一篇不错的文章,随手翻译,作者是jielse发表于androidHub。随着智能手机的发明,许多开发人员都提出了同样的问题:如何为多个移动平台构建和发布应用程序? 包括最初的iPhon...
  • u010321471
  • u010321471
  • 2017年10月27日 03:30
  • 4459

列一份跨平台开发的读书清单

跨平台读书数据库编程postgresqlhibernate如果要开一份跨平台开发的读书清单:   0. 深入理解计算机系统     将它列为0,实在是因为它是一本从程序员的角度去解释一个计算机系...
  • sgkuo
  • sgkuo
  • 2013年09月03日 17:58
  • 433

跨平台开发?

  再次尝试用.net开发c/c++代码。   稍有点意外的发现在所有mfc工程中也可以良好的支持标准c/c++。   那个著名的stdafx.h报错,可以在工程配置中取消。(预编译头选无),为了...
  • trobin
  • trobin
  • 2010年10月25日 08:57
  • 392

1、跨平台开发——分类

​ 一般来说,提到跨平台开发的时候指的都是写一个可以在多个不同系列的操作系统中运行程序。但是,我们这儿值得跨平台相对比较广义一些。我们认为“平台”这个词本身是比较模糊的,它至少包含硬件平台和软件平...
  • xxNull
  • xxNull
  • 2017年10月09日 15:02
  • 66

App跨平台开发方案与取舍

App跨平台开发方案与抉择内心强大才敢于承认错误,但是首先你要敢于去试错。现在做客户端开发的公司都会面临一个巨大的问题,那么就是跨平台。对于目前上市面上的移动设备来说。Android、IOS、Wind...
  • hliq5399
  • hliq5399
  • 2016年03月15日 16:53
  • 9872

C#开发者的移动跨平台开发工具

Xamarin是一个行动App开发平台,提供跨平台开发能力,开发人员透过Xamarin开发工具与程序语言,即可开发出iOS、Android 与Windows 等平台的原生(Native) App 应用...
  • asp_programmer_xfx
  • asp_programmer_xfx
  • 2014年03月15日 23:16
  • 235

一个功能,两个平台,三种语言 -(iOS,Swift,Android)App代码实现对比篇

-调研 话说移动互联网正值风起云涌期间,各路编程高手都是摩拳擦掌,何况企业公司都开始接受现实,走移动办公,信息云端,大数据处理的步伐,在这本该三足鼎立的时刻,微软显得有点步履蹒跚,导致移动端最值得进军...
  • mapboo
  • mapboo
  • 2015年02月03日 16:25
  • 2322

C++ 跨平台编程宏定义

操作系统判定宏 Windows:   WIN32 Linux:   linux Solaris:   __sun 编译器 VC:  _MSC_VER GCC/G++...
  • u013898698
  • u013898698
  • 2017年06月22日 16:49
  • 261

关于Delphi xe5跨平台开发

一.android平台编程方式:       1.基于Android SDK进行开发的第三方应用都必须使用Java语言(Android的SDK基于Java实现)       2.自从ndk r5发...
  • Syndicator
  • Syndicator
  • 2014年01月20日 10:57
  • 1468
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:跨平台开发
举报原因:
原因补充:

(最多只允许输入30个字)