C源代码经过编译后最终生成可执行文件(机器码)

Gs_Yu 2014-11-13 09:58:01
如题,在网上查了下

百度上说:高级语言经编译最终生成可执行的机器码文件

wiki上说:有一些编译器输出的代码,将运行于与编译器所在相同类型的计算机和操作系统之上,这种编译器叫做本地编译器

疑问:
1.如果最终生成可执行文件里面都是机器码,也就是机器可以识别的代码,指的是指令集吗?
2.如果是cpu指令集,那么同一台X86架构的计算机装的双系统(windows,ubuntu),在windows下编译生成的文件为什么不能在ubuntu下不能运行呢?

希望有大侠指点一下,非常感谢
...全文
1192 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
1987andy 2014-11-13
  • 打赏
  • 举报
回复
底层指令相同是对的 但是在底层架构的上面还有一层操作系统层,要知道你的程序是跑在os层,而不是直接在底层架构上跑的,简单的理解就是,os是负责连接你程序和底层的架构的。 所以不同的操作系统在沟通你的程序和底层是有所不同的,造成了这种问题
luciferisnotsatan 2014-11-13
  • 打赏
  • 举报
回复
引用 5 楼 gscaiyucheng 的回复:
[quote=引用 1 楼 luciferisnotsatan 的回复:] 你编完的东西实在操作系统上运行的。windows提供的系统函数和ubuntu一样么? 如果你不用操作系统提供的任何东西,那程序应该是可以在硬件上运行的。不错这也就没有为什么不能在ubuntu上运行这回事了,压根和ubuntu没任何关系。
也就是说:百度上面说的生成可执行的机器语言代码,这个机器语言代码其实还是要调用操作系统的给的接口是吗?麻烦您了[/quote] 是的。 其实在你代码能调系统API之前,先要系统能认识你这个文件是可执行文件,并把它执行起来。可执行文件的格式,window和linux是不一样的。
Gs_Yu 2014-11-13
  • 打赏
  • 举报
回复
引用 1 楼 luciferisnotsatan 的回复:
你编完的东西实在操作系统上运行的。windows提供的系统函数和ubuntu一样么? 如果你不用操作系统提供的任何东西,那程序应该是可以在硬件上运行的。不错这也就没有为什么不能在ubuntu上运行这回事了,压根和ubuntu没任何关系。
也就是说:百度上面说的生成可执行的机器语言代码,这个机器语言代码其实还是要调用操作系统的给的接口是吗?麻烦您了
Luisfan 2014-11-13
  • 打赏
  • 举报
回复
编译方式以及系统调用决定了
图灵狗 2014-11-13
  • 打赏
  • 举报
回复
操作系统对自己可执行文件的调度方式是不一样的,参考http://www.it165.net/os/html/201409/9304.html,而Windows下的exe文件的处理又是另外一种方式。
luciferisnotsatan 2014-11-13
  • 打赏
  • 举报
回复
你写的是操作系统上跑的程序,不是操作系统本省。
luciferisnotsatan 2014-11-13
  • 打赏
  • 举报
回复
你编完的东西实在操作系统上运行的。windows提供的系统函数和ubuntu一样么? 如果你不用操作系统提供的任何东西,那程序应该是可以在硬件上运行的。不错这也就没有为什么不能在ubuntu上运行这回事了,压根和ubuntu没任何关系。
二进制脑袋 2014-11-13
  • 打赏
  • 举报
回复
引用 楼主 gscaiyucheng 的回复:
如题,在网上查了下 百度上说:高级语言经编译最终生成可执行的机器码文件 wiki上说:有一些编译器输出的代码,将运行于与编译器所在相同类型的计算机和操作系统之上,这种编译器叫做本地编译器 疑问: 1.如果最终生成可执行文件里面都是机器码,也就是机器可以识别的代码,指的是指令集吗? 2.如果是cpu指令集,那么同一台X86架构的计算机装的双系统(windows,ubuntu),在windows下编译生成的文件为什么不能在ubuntu下不能运行呢? 希望有大侠指点一下,非常感谢
有空参考我的博文:http://blog.csdn.net/binaryhead/article/details/41083927,希望对你有帮助。

69,835

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧