考试网 >> IT认证 >> Linux >> Linux指导 >> 编写适用于模拟器的 Linux 代码

编写适用于模拟器的 Linux 代码

发布时间:2006-06-28 10:57     点击:
分页:上一页  1 2 3 4 [5] 6  下一页

  共享程序库为开发人员指出了另外一个注意事项。了解不同的系统正在使用的程序库版本很重要。现在,NetBSD 的 Linux 模拟环境正在使用的是 SUSE 7.3 共享程序库。仍然有使用 9.1 共享程序库的代码,但是它们会获得警告,告之它们不能稳定地进行内核级模拟。

  模拟环境软件包通常远远跟不上市场的步伐。即使您觉得大部分预期用户都应该拥有了相当新的 Linux 发行版本,但是大批模拟器还是几乎全都有些跟不上时代。

  共享程序库还引发了另一个顾虑 —— 不是每个系统都包含全部共享程序库。模拟环境软件包通常不会安装所有最新的共享程序库。而且,更麻烦的是,它们的用户也不太可能有能力轻松地安装所缺少的软件包。

  在这些情况下,最大限度地减少对新特性和非核心共享程序库的依赖是一个好办法。模拟器用户可能会遇到这些问题。

  不要误以为使用静态程序库就可以保证解决这些问题。静态程序库可能引入其自己的新的依赖,而且不容易检查到它们。如果静态地链接了一个使用某个不可移植的系统调用,那么通过重写算法来避免这个系统调用将没有什么用处。动态链接让您构建的程序能够在更大范围内的系统上运行。

  调用其他程序的程序

  有一种特别的情形比任何其他情形更令人们头疼,尤其与安装器相关。在很多系统上,调用 /bin/sh 所得到的 shell 不是bash。这就意味着使用 bash 扩展的脚本可能不能在其他系统上运行。

  这就陷入了模拟器中的一个特别错综复杂的逻辑中。当执行二进制程序时,操作系统可能知道的足够多,可以核对相关的 Linux 二进制程序的 Linux 路径,而且它可能在那里安装 bash 的一个副本。但是,当您运行一个脚本时,内核不会将其看作是一个 Linux 二进制程序;它发现脚本附带有一个解释程序路径,当尝试加载解释程序时,它将不再运行于模拟模式之下。

  可移植 shell 脚本技术在这里得到了应用。当用户运行被模拟的应用程序时,这是要面对的最常见问题之一。安装器可能会因为不是可移植的 shell 脚本而不能运行。

  类似于标准的开发,只是更为标准

  - 尽可能遵循适当的标准。

  - 避免“专门特性”。

  - 不要挑战极限(push the envelope)。

  而且,只要可以避免,就不要依赖于一个月前刚刚发布的某些东西来构建您的代码。因为那样做将缩小您的有效的目标市场。
分页:上一页  1 2 3 4 [5] 6  下一页
版权申明:未经书面授权请勿转载本站信息!!作品版权归所属媒体与作者所有!!
发表评论: 匿名发表 用户名: 查看评论
您将承担一切因您的行为、言论而直接或间接导致的民事或刑事法律责任
留言板管理人员有权保留或删除其管辖留言中的任意内容
本站提醒:不要进行人身攻击。谢谢配合。
在本站搜索相关信息
2003-2005 Ksw123.com All Rights Reserved. - TOP
Copyright © 2006 Ksw123.com. All rights reserved.中国考题网 版权所有