西西河

主题:关于Linux的推广——普通用户篇 -- 万斤

共:💬381 🌺357
全看树展主题 · 分页首页 上页
/ 26
下页 末页
家园 跨OS移植算不上“超级大难题”

跨平台软件有很多,最熟知的如Firefox。可以说只要开发者想做,都可以把软件做成跨平台的,不是什么难事。只是有些软件一开始开发时就没有考虑跨平台而已。

家园 UNIX体系结构是针对UNIX的,管不着Win和Mac

那我说从1985年的windows1.0到现在的2008也有规范,估计也没人会说错。

OK,我的记性不好,那么根据wiki和GNU官方网站:

GNU 项目创始于一九八四年,旨在开发一个类似 Unix ,且为 自由软件 的完整的操作系统: GNU 系统。

UNIX是一种广泛使用的商业操作系统的名称。

由于 GNU 将要实现 UNIX 系统的接口标准,因此 GNU 计划可以分别开发不同的操作系统部件。

1992年,Linux与其他GNU软件结合,完全自由的操作系统正式诞生。该操作系统往往被称为“GNU/Linux”或简称Linux。

GNU通用公共许可证(GNU General Public License)(英文通常以GNU GPL或是直接简短的以GPL表示),是一个广泛被使用的自由软件许可证

1. GNU设计的时候是根据UNIX的接口标准,与Windows何干?为什么Gates要理睬这个东西?

2. UNIX是一类OS的通用名称,不是规范。UNIX/Linux体系变种极多,也从来没有规范。你要说规范,甚至是“操作系统的规范”,请起码也得说ISO/IEC多少多少吧?

3. 系统移植性。正如依靠GNU,软件在UNIX/Linux体系内可以互通一样。在Windows家族内部,依靠“Windows规范”,软件的移植性也没有大问题。甚至在Windows家族内部,都不用重编译。这对商用软件绝对是大好事。

4. 再说一次,GNU只是个项目的名字,不是“规范”,更不是什么“系统组件”

家园 cheat engine好像没有linux版

linux下有别的类似软件么?

家园 是个实用性和必要性的问题。而且业界也没人捧着GNU当圣旨

如果从设计之初就考虑跨平台,当然一切都好办。但如果让已有的软件跨平台移植,90%都得重新架构,所以我才说算是“超级大难题”。不是难在技术实现上,是难在是否有这个必要和是否值得。

但如果有人捧着GNU到处招摇,不说盖子,就是UNIX/Linux内部的软件商,能有几家同意呢?

家园 说90%需要重新架构夸张了

Office和photoshop都有mac版。可以说只要设计不是太烂的软件作跨平台移植并不是非常困难的事。很多软件没有跨平台,最主要原因是其他平台的市场份额不够,开发商不屑去做而已。

家园 嘻嘻,你说的可都是有钱有势的业界老大呢

不清楚M$是怎么整得Office可以移植的(我一直以为是神话),但Windows下的(大型软件的)开发使用的那些工具,难得有几个可以兼容UNIX/Linux的。

我说90%只是形容一下“很多很多很多”,呵呵,倒没有数据支持这么说。但我可以说大部分软件在设计之初就没有考虑跨平台,在事后考虑移植的时候,软件的设计在移植能力上估计没几个算不烂的。也是啊,既然Linux上没这个份额,设计的时候干嘛还费事费人工去考虑这个呢

不过我对这点确实不懂,有空请科普一下,如果一个软件需要考虑跨平台,应该在开发之初应该多考虑什么?首先选个好用的跨平台编译器是肯定的,然后呢?

家园 哈哈,前端时间我在玩英雄无敌3的linux版
家园 移植没有想象中那么困难

也不一定要业界老大才能做。很多开源中小软件都是跨平台的。主要考虑就是如果一开始就打算跨平台,往往都选用一个跨平台的函数库作支持,比如楼下说的QT就是非常棒的一款。

即使一开始没有考虑跨平台,如果设计得当事后再做也不是很难。因为一般软件里不跨平台的部分多是界面部分还有一些底层支持,而大部分内部逻辑都是与平台无关的。软件设计的一个原则就是内部逻辑与外部界面分开。所以要移植只要把界面部分按要求重写就行了,内部可以原封不动。基本上就是个力气活。当然如果设计得不好,各部分代码混杂在一起自然就比较惨,但一般有点经验的都不会这样。

至于编译器等开发环境问题,只要你的代码不依赖某特定环境(比如MFC),不同平台下可以用不同编译环境来做。

家园 Okey,算我说错了,重新来过。
家园 本来不应该回得这个主题的,不过这样吧,

分歧就是,你觉得 windows 做得很有规范(估且这么说吧);我不那么觉得。为了防范像昨天那样空对空,这里举个例子——FSSTND

这是 unix-like 系统的目录标准,由一个称为 Free Standards Group 的 non-profit organization 来维护的,这个组织是什么你自己看下吧。我不清楚 windows 的情况,提问很简单的, Windows 做过类似的承诺,有相似的文件吗?

家园 最后,我申明一点:我从来没说过 GNU 是规范。

我只说过 GNU 是一个(可移植性的)典范……

家园 简单地说,只要你不使用微软件提供的库,

一切 OK ,让人推荐的话,我推 GNU 的工具链,完善的文档和解决方案一应俱全,跟其它工具兼容的也很好,可以有各奇怪的搭配选择。

我要说的是,只要你遵循相关的规范,程序的移植没有你想的那么困难……

家园 继续请教跨平台移植问题

1. 在windows和UNIX/Linux中,有什么通用的编译器和库吗?LS的QT大概算一个,还有什么其他比较有名的吗?(解释型的python,php之类除外)

2. 编译器和库可以混用吗?看起来QT也是CPP的,可以用MFC库吗?或者说VC可以用QT库吗?

3. 如果软件原先是用VC开发的,可以直接copy源代码到QT(或者VJ的copy到Linux下的java编译器什么的),然后换一下界面和底层的库调用函数就好了吗?还是语法结构什么的都得按QT的来?如果每句话都得重写,移植一个稍大的软件的体力劳动不比挖煤轻啊——或者有工具可以自动转换?

4. 虽然不喜欢做职业编程,但个人喜好编些小程序玩,有空请推荐一款容易上手,功能强大,支持平台多的free的编译器和库。QT?谢谢。

家园 Windows有没有承诺我不清楚,但目录结构相对还是规范

系统文件都在Windows或Winnt下,程序文件在Program files下,用户profile在Documents and Setting或users(最近Vista刚改,不清楚为什么,可能为了跟mac兼容)。很长时间以来都是这样的。

你要知道从Windows 1.0到现在的2008,windows结构变动有多大。但10多年前的Win95的某些程序在2008上仍然可以跑(无须重编译),这就说明了Windows还是有一定规范的。当然,Gates愿不愿意给出承诺,或者公开文档是另一回事。

家园 从基本的linux编程开始吧

编译器可以各用各的,不需要通用,因为语言是标准的。主要是调用的库不同。linux下的编译器主要是gnu系列(gcc,g++等)。跨平台库么除了QT外还有很多,gtk,wxWidgets什么的,但是QT我觉得是最好用的。

你这些问题,对于完全没有linux编程经验的人比较难解释,说详细了会很长,说简单了我恐怕你也仍然是一头雾水。我觉得你要是真有兴趣就学学在linux下编些小程序,等你积累了些linux/unix下的编程经验,到时候这些问题都自然明了。

全看树展主题 · 分页首页 上页
/ 26
下页 末页


有趣有益,互惠互利;开阔视野,博采众长。
虚拟的网络,真实的人。天南地北客,相逢皆朋友

Copyright © cchere 西西河