1. 编译器 可移植性问题
你用tc编的程序,在windows下面可以运行,tc把它编译成二进制了
只要是windows系统,都能识别该二进制,换了其他的windows系统的电脑,以都能运行的
也就是说,对于windows系统来说,无论你用什么语言,如pascal,delphi,c++,java,只要你编译后生成了可执行文件
把它放到其他windows系统的电脑上,也都可以运行的
但是,就算是同一台电脑,如果你既安装了windows,又安装了linux
你在windows下编译出来的可执行文件,切换到linux系统下,就不能运行了
当然了,如果放在其他的系统上,如手机的symbian系统上,也是不能运行的
补充回答:
生成的二进制文件的移植性,是由操作系统,如windows,linux保证的
而我们说的c语言的移植性,是指c语言源码能否在其他系统上编译
比如我在windows环境下,写了一段c代码,放到linux下,仍然可以编译,这就说明它的移植性很好
所以,要提供c语言的移植性,必须使用标准的c的代码
如果你调用了windows的api,那么在linux下,是无法编译通过的
2. C语言代码编译成的是机器码,那么怎么实现可移植性呢
C语言写的代码编译成了机器码,与编译器有关,与当前的电脑的CPU没有关系
有个概念叫交叉编译,我们做嵌入式的,就靠这个工作了
也就是在PC上编译的机器码,下载到其他的芯片里面,让它在这个芯片里运行
只要其他的电脑也支持同样的编译器产生的机器码,就可以一致到它上面
3. 编译型语言和解释型语言各自的优缺点是什么
一、编译型语言
优点:运行速度快,代码效率高,编译后的程序不可修改,保密性较好。
缺点:代码需要经过编译方可运行,可移植性差,只能在兼容的操作系统上运行 。
二、解释型语言
优点:可移植性较好,只要有解释环境,可在不同的操作系统上运行。
缺点:运行需要解释环境,运行起来比编译的要慢,占用资源也要多一些,代码效率低,代码修改后就可运行,不需要编译过程。
(3)编译系统解释系统可移植性扩展阅读:
编译型语言:程序在执行之前需要一个专门的编译过程,把程序编译成 为机器语言的文件,运行时不需要重新翻译,直接使用编译的结果就行了。程序执行效率高,依赖编译器,跨平台性差些。如C、C++、Delphi等。而相对的,解释性语言编写的程序不进行预先编译,以文本方式存储程序代码。在发布程序时,看起来省了道编译工序。但是在运行程序的时候,解释性语言必须先解释再运行。
4. C语言中,可移植性是什么意思啊
就是可以在不同的平台上用,而改动的代码是一部分,其实是分模块编程,把不会变的一类写到一起
5. 何谓操作系统的可移植性怎样才能方便移植_如何实现程序的可移植性
是否需要修改代码。
是否需要修改配置。
是否需要重新编译。
是否能够运行。
运行的结果是否正确。
“超过xx%代码由C语言编写,只有xx个函数是汇编,移植时只有xx个函数需要修改”。他们所关注的不外乎是操作系统本身从一个硬件平台移植到另一个硬件平台的难易度,这根颤凯樱本就是舍本逐末的提法。试问,一个含嵌入式系统的产品中,操作系统重要还是应用程序重要?我们说嵌入式操作系统是嵌入式产业的核心,是针对整个产业来说的,毕竟,操作系统的装机量远大于任何一个运行于操作系统的应用程序。而对具体产品来说,则应用程序无论从哪个方面讲都远比操作系统重要。对一个企业来说,尤其如此,企业可能有非常多的衍生产品,他们同同一份操作系统拷贝,或者有许多产品系列,系列之间的操作系统也只是稍有不同。他们花在移植操作系统上的时间,远小于应用程序的工作量,甚至可以忽略不孙此计。因此,操作系统茄丛的可移植性,应该把重点放在协助应用程序移植上,那才是可移植性的精髓所在。
djyos在这方面是非常出色的,举个例子,如果某企业有两个相似产品,产品L不需要显示界面,产品H需要显示界面,其他功能相同,在的djyos下,你可以轻易做到:
1、把软件分成两大块,一块是显示部分代码,称为模块A,另一块是显示无关代码,显示无关代码完成产品的整体功能,调用显示部分的功能实现界面显示,称为模块B。
2、如果是si模式,AB一起编译就是产品H,单独编译B就是产品L。编译产品L时连模块B中跟调用显示功能的代码都无需修改。
3、如果在dlsp模式下,则把模块A编译成A.out,模块B编译成B.out,把A.out和B.out一起到autorun目录下就成了产品H,单独B.out就成立产品L。
djyos的各模块设置,无不是围绕方便应用程序移植来设计,多事件调度器、泛设备组件、异步信号同步功能、事件和事件类型同步、应用程序模块加载器等,都为此做了许多考虑。今天很累了,暂不细说,在接下来的一段时间里,我将系列化发帖,讲述djyos中如何协助应用程序可移植,以及软件可移植性与可靠性之间的关系。