为什么在windows下编译的c程序不能在linux下运行

既然C语言最终会被编译成二进制的机器码,为什么在windows下(vc)编译的程序不能在linux下运行(就是最简单的数学运算,不涉及各种API)。exe有什么特别的地方... 既然C语言最终会被编译成二进制的机器码,为什么在windows下(vc)编译的程序不能在linux下运行(就是最简单的数学运算,不涉及各种API)。exe有什么特别的地方吗 展开
 我来答
ddr198866
2014-04-29 · TA获得超过200个赞
知道小有建树答主
回答量:204
采纳率:0%
帮助的人:253万
展开全部
对于不同操作系统的编译器肯定是不一样的,不同的编译器所实现的功能,和编译的方式都有所不同,所以同样的源代码无法通过不同的编译器

1 首先是包含的文件名就不一样,头文件的名不一样,预处理器都无法找到要包含的文件
2 有些函数名也不一样,比如多线处理的相关函数,共享内存的相关函数
追问
我想问的是编译好的文件有什么不同?我用的源代码都是标准c的,包含一个stdio.h文件,用的函数就一个printf。不管什么编译器,最终的结果不都是机器码么?
追答
二进制代码是需要使用操作系统提供的系统调用的,linux的调用时int 0x80,windows的肯定是不一样的,所以肯定执行不了
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式