C语言代码编译成的是机器码,那么怎么实现可移植性呢?

我在想:C语言写的代码编译成了机器码,那么其可执行程序就与当前电脑的CPU有很大关系了;那么我把这个程序放到另外一个机子上,如果它的CPU类型等等与刚刚的机子不一样,那么... 我在想: C语言写的代码编译成了机器码,那么其可执行程序就与当前电脑的CPU有很大关系了;
那么我把这个程序放到另外一个机子上,如果它的CPU类型等等与刚刚的机子不一样,那么这个程序还能执行吗?
这怎么能体现C语言的可移植性呢?

也许我说错了,更想听高手指点下!
多谢!
展开
 我来答
tianlidon
2016-01-02 · TA获得超过1219个赞
知道小有建树答主
回答量:676
采纳率:85%
帮助的人:102万
展开全部
可移植指的不是编译好的文件可移植。不同的平台(不同的cpu或操作系统)中有不同的编译器,这些编译器在不同平台中把同样的一份源码编译成对应此平台的二进制文件就实现了移植。当然也不一定就编译成最底层的代码,也可能编译成特定平台虚拟机可以运行的中间代码。如java这种语言,在不同平台上实现虚拟机,针对虚拟机编译就可以实现可移植(当然c代码的编译一般是直接针对硬件的)。
只要编译器足够强大,在一个平台上就可以编译出另一个平台可用的二进制文件。说到底无非是把你的源码“翻译成”特定平台能认识的另一堆代码。
AiPPT
2024-09-19 广告
随着AI技术的飞速发展,如今市面上涌现了许多实用易操作的AI生成工具1、简介:AiPPT: 这款AI工具智能理解用户输入的主题,提供“AI智能生成”和“导入本地大纲”的选项,生成的PPT内容丰富多样,可自由编辑和添加元素,图表类型包括柱状图... 点击进入详情页
本回答由AiPPT提供
Fixend
推荐于2017-09-25 · TA获得超过1978个赞
知道小有建树答主
回答量:710
采纳率:0%
帮助的人:1032万
展开全部
C语言的可移植性不是体现在生成的2进制文件上面,而是体现在源代码级别的,只要重新编译就能运行。
一是,因为大部分系统都实现了C的标准运行库。
二是,它对机器指令进行了抽象。用if,for等语句代替了多条机器指令。

像汇编这种就不太可移植的,它一条语句对应一条机器指令,不同CPU支持的指令集是不完全一样的。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
高金山
2008-04-24 · TA获得超过1万个赞
知道大有可为答主
回答量:4101
采纳率:0%
帮助的人:1640万
展开全部
C语言写的代码编译成了机器码,与编译器有关,与当前的电脑的CPU没有关系

有个概念叫交叉编译,我们做嵌入式的,就靠这个工作了
也就是在PC上编译的机器码,下载到其他的芯片里面,让它在这个芯片里运行

只要其他的电脑也支持同样的编译器产生的机器码,就可以一致到它上面
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
L_o_o_n_i_e
2008-04-24 · TA获得超过4.2万个赞
知道大有可为答主
回答量:8507
采纳率:38%
帮助的人:5043万
展开全部
C语言代码编译成的是机器码,通常不能在不同指令系统的机器上运行。

我遇到过同样的机器,同样的机器码,同样的操作系统,也就是原来在本机编好的若干程序,突然运行不了了(出错),必须重新编译后才能运行。因为微软动态链接库里的子程序号码“更新”了。

如果编译成半成品机器码,或者类似obj,到运行的机器上再由附加的解释器解释(或编译器链接),则可以运行。这就是所谓的“跨平台”“移植”“嵌入”。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
john_deng58
2008-04-24 · TA获得超过253个赞
知道答主
回答量:276
采纳率:0%
帮助的人:0
展开全部
与CPU的架构和OS有关系
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式