[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: 求教,Linux学习问题



Ding Honghui 写道:
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

你这简直就是没事找事。

混到你这样,你难道就还不知道怎么样静态链接?

shell909090 wrote:
YueGuang 写道:
大家好:
   据我所知,unix之作以衰落,就是因为兼容性问题,版本多的不得了,且
不遵
循同一标准。Linux的情况应该大有不同,毕竟有lsb。我曾经使用过redflag
redhat fedora ubandu debian,仅从使用者的角度来说兼容性还是很好的。
   我想开发大概不像您说的那样困难吧,因为在Linux下的软件要想安装,
只需下
源代码,./configure make ,make install即可。而且这个源代码包是唯一
的并不
按架构或者系统分什么版本。因此,我想编程方面应该是很好的解决了挎平
台、挎
不同Linux版本的问题,毕竟Linux存在了这么多年了,从创立之初就面临着多架
构、多平台。建议你问问一些自由软件项目的程序员,看他们如何解决你的
问题。

   我没有太多的开发经验,臆想而已,不要见笑。

在 2008-05-22四的 21:39 +0800,shell909090写道:

看来我变苯了,人家说人生要避免了几个问题之一,就是在一群宗教狂热者
里面说 神祗的坏话。我向微软购买一次技术支持的成本是多少?我为了开
发 Debian,Ubuntu,FC,SuSE,Solaris,Aix而购买的技术支持又是多少?如果
说Linux比 Windows的长处在哪里,成本低应当是其中之一吧。如果照您的
说法,我算了解成 本低到谁头上来了。
另外关于版本的问题,这个我得澄清一下,我针对的已经不止Linux系统
了,而是 整个*nix家族。作为Windows家族,大多数的API都是类似的 (事
实上不同的也很 多,只是我运气好还没有在工作中碰到而已)。而*nix家
族,虽然血缘上很近,然 而API却非常分散,而且很多定义也不一致。例
如,我写的程序需要列出一些依赖 性要求和硬件要求(这是项目最基本的
吧)。而我针对Debian和Ubuntu所列的依赖性 就不尽相同,针对不同版本所
列的依赖性又不一致(这到不是什么大问题,毕竟我 们也在不断升级)。而
我针对Redhat和SuSE家族列的依赖性,又不完全一致。现在 我得用一个
表,来列出我各个版本的库,对于不同系统的依赖状态。
关于此点,我也是万分无奈。都是在linux圈子里面玩了这么久的人了,我
自然也 知道现在这个状况的历史原因,上面说的一大段话也可以说是发牢
骚。只是我想问 问,Linux的将来,是否还在这种全自由(也可以说全混乱)
的状态下继续呢?如果 我离开目前这个项目组,谁又能完整的接手整个
库,而不是诅咒着要把我订小人。
另外回答一位朋友的问题,AMD是不是X86。如果AMD64和X86没区别,那
debian软件 池里面分开i386和amd64的举措有什么必要呢?诚然,i386的软
件可以在amd64上顺 利运行,然而效率就是两回事情了。而amd64的软件不
可在i386上运行。因此一般 针对amd64的系统特别编译一套库(准确的说,
最佳选择是针对每个机器编译一个 库,就像gentoo那样,不过一般只要
x86/amd对上了,其他方面的都感觉不到差异)。
另外谢谢众位兄弟的提醒,我去看看lsb是否能解决我的问题。另外,谁知
道 Solaris10和AIX5L是否也有lsb?还有,最近本人的ALC声卡在 testing
版上杂音很 大,stable版上则基本没有杂音。ATI X200显卡使用fglrx后,
在testing版上反不 如stable版上快。谁见过类似的情况么?如果见过,请
帮忙看下具体情况,感激不尽。

Miracle Liu 写道:
shell909090,不知您目前的工作是什么,技术人员?还是公司高层。不过
对于 您的措辞我感到有些不满,至少我不会用" 毛病"这个词语来形容
您,同时请您 了解,kernel只是Linux的一小部分而已,您说的不爽和头
痛的问题应该归结于 您没有找到一个很好的技术支持。您前文提到了在
win下开发的通用问题,它之 所以让您感到方便,或者用您的话说是"通用
性好",是因为您购买了ms的产品, ms要赚钱,他的目的当然是让客户花
最少的时间和人员开发成本来快速"高效"的 使用自己的开发工具和系统。
这一点如果您找一家Linux厂商,如novell,一样 可以得到满意的服务。
您还提到了版本问题,我想版本最多的系统应该就是 Linux了,而出现的
原因就是像上面的兄弟说的一样,目的不同而导致的。试 问,目前ubuntu
多个版本,无非不也就是在某一方面配置的多一些,为用户考虑 的多一些
吗。linux的X有些地方确实不如win我承认,不过本人愚笨想请问您一
下,在Linux 下编程除了没有傻瓜化的操作以为哪里的问题,让您感到如
此不爽 了呢?难道在您看来,相同时间发行的不同版本的Linux,在您开
来差异如此之 大吗?



shell909090 wrote:

我发现很多人一个毛病是,对自己喜欢的东西受不得批评。如果Linux
真的
方方面面都让人爽了,那现在Linux内核那帮工程师在干吗?祈祷地球和
平?了 解喜欢东 西的弱点,并且加以改进,才能让这个东西变得更完美
吧?再说我 不 认同Linux是从何说起呢?要不认同我早退了。要说不了解
Linux系统,我 倒是 承认。我觉得他 的问题之一就是……了解成本太高。
从应用来说,的却是这样没错。不过从管理上,我没法要求客户这么做。例
如,理 论上说,我可以要求我的客户给我安装一个特定版本的ssl。我给他一
个源码,他 编译一次,然后安装。这样我在一堆机器上安装都一样,这个ssl
是不变的。然而 事实上却无法这样处理。每个机器的管理员会用不同的方法
来管理ssl。例如 debian用的是deb,rhel就是rpm。而这个deb和rpm却未必是
从同一个源码中编译出 来的。有的时候,实在不行我会建议由我们在目标机
器上编译一个ssl,放在我们 的程序下面,仅我们自己使用。然而有的客户连
这样都不同意,要求我们必须使用 系统库。所以我们给他写的本地库,用的
全是老的 API。而因为效率或者安全问 题,我们新的库又肯定不这么用。
这个问题在其他地方并不明显,可在我这里被刻意的放大了。因为我这个部分
的定 义就是"处理标准java API无法处理的部分",一般来说,这部分东西的
处理几乎是 每个系统一套的,而且东西非常分散。可能我前后脚做的东西,
一个是和硬件打交 道,另一个就去做算法了。算法看起来标准吧,还得优化
计算。例如有次,我也是 自找麻烦。我将算法中最核心的部分,"超长大数乘
法",用汇编做了一遍。最后试 验下来,性能优化了1.5-8倍,总体性能提升
大约20%多。老板高兴坏了,让我移 植。OMG,汇编我只会X86的阿。然后就很
无奈的学习各种编译器和汇编的接口方 式,还有各种汇编语言。再用宏来决
定链接的文件。最后发现,有部分平台和编译 器上,我优化的代码和C++加上
编译优化选项的差不多。于是又针对这几种平台和 编译器做特殊的编译处
理。到目前为止,还是有的平台是直接汇编编译的,有的平 台是C++编译的,
有的平台是使用特殊的编译处理的。实话说,从软件工程角度, 这是非常差
劲的选择。特性不统一,管理成本高,然而我们就硬是上了。外面好像 有卖
类似库的,不过老板考虑再三,觉得我的薪水比买库便宜多了。
凡是标准API不好处理的,消耗CPU的,全会被扔到我手里。你可以想像一下,
我碰 到的都是些什么东西。如果你觉得用户体验上说,编译起来并不困难,
是因为代码 在初始设计的时候就有意抽离了和系统相关的部分。在编译的时
候根据系统当时状 态传递不同参数进来,我们产生不同的宏定义。不同的宏
定义控制编译了不同的文 件和代码,最终形成的文件就是适合这种系统状态
的。而兄弟我,就是那个可怜的 控制每个系统不同的文件的家伙。至于说
linux不统一的根据,我只要判断当前是 windows下编译,就是单一的代码,
连版本都不用判断的。linux下起码就是一堆版 本和依赖性,有的时候还是一
堆库和依赖性。有的时候往往出现一个库不报错的, 换一个类似的库就报错。


-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.6 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org

iD8DBQFIOheuJo9Njjkvy34RAsbVAKCLbv23CaRrnc31B1v9yMyfdacuwgCdHSpc
ExSyL4SPF5YUA78wVjiEIaw=
=PtWq
-----END PGP SIGNATURE-----


我知道没事找事阿,我当初做也只是准备测试下,优化过的汇编和优化过的C++效 率差多少。谁知道不知道谁把测试结果上报了老板,结果…… 还有关于管理,上次还邮件里面还讲到一个差异。我用bash做的,结果还是碰到系 统间差异。我倒是没碰上(Ubuntu那台根本没无线网卡),可让网友给我提了出来。

ifstatus=$(cat /etc/network/run/ifstate | grep ath0 | sed "s/ath0=//")

ubuntu 7.10 中 ifstate 位置在 /var/run/network/ifstate

这种差异基本就是判断下系统就好了,可一多也麻烦。


Reply to: