百度上说:高级语言经编译最终生成可执行的机器码文件
wiki上说:有一些编译器输出的代码,将运行于与编译器所在相同类型的计算机和操作系统之上,这种编译器叫做本地编译器
疑问:
1.如果最终生成可执行文件里面都是机器码,也就是机器可以识别的代码,指的是指令集吗?
2.如果是cpu指令集,那么同一台X86架构的计算机装的双系统(windows,ubuntu),在windows下编译生成的文件为什么不能在ubuntu下不能运行呢?
希望有大侠指点一下,非常感谢
8 个解决方案
#1
你编完的东西实在操作系统上运行的。windows提供的系统函数和ubuntu一样么?
如果你不用操作系统提供的任何东西,那程序应该是可以在硬件上运行的。不错这也就没有为什么不能在ubuntu上运行这回事了,压根和ubuntu没任何关系。
如果你不用操作系统提供的任何东西,那程序应该是可以在硬件上运行的。不错这也就没有为什么不能在ubuntu上运行这回事了,压根和ubuntu没任何关系。
#2
你写的是操作系统上跑的程序,不是操作系统本省。
#3
操作系统对自己可执行文件的调度方式是不一样的,参考http://www.it165.net/os/html/201409/9304.html,而Windows下的exe文件的处理又是另外一种方式。
#4
编译方式以及系统调用决定了
#5
也就是说:百度上面说的生成可执行的机器语言代码,这个机器语言代码其实还是要调用操作系统的给的接口是吗?麻烦您了
#6
是的。
其实在你代码能调系统API之前,先要系统能认识你这个文件是可执行文件,并把它执行起来。可执行文件的格式,window和linux是不一样的。
#7
底层指令相同是对的
但是在底层架构的上面还有一层操作系统层,要知道你的程序是跑在os层,而不是直接在底层架构上跑的,简单的理解就是,os是负责连接你程序和底层的架构的。
所以不同的操作系统在沟通你的程序和底层是有所不同的,造成了这种问题
但是在底层架构的上面还有一层操作系统层,要知道你的程序是跑在os层,而不是直接在底层架构上跑的,简单的理解就是,os是负责连接你程序和底层的架构的。
所以不同的操作系统在沟通你的程序和底层是有所不同的,造成了这种问题
#8
如题,在网上查了下
百度上说:高级语言经编译最终生成可执行的机器码文件
wiki上说:有一些编译器输出的代码,将运行于与编译器所在相同类型的计算机和操作系统之上,这种编译器叫做本地编译器
疑问:
1.如果最终生成可执行文件里面都是机器码,也就是机器可以识别的代码,指的是指令集吗?
2.如果是cpu指令集,那么同一台X86架构的计算机装的双系统(windows,ubuntu),在windows下编译生成的文件为什么不能在ubuntu下不能运行呢?
希望有大侠指点一下,非常感谢
有空参考我的博文: http://blog.csdn.net/binaryhead/article/details/41083927,希望对你有帮助。
#1
你编完的东西实在操作系统上运行的。windows提供的系统函数和ubuntu一样么?
如果你不用操作系统提供的任何东西,那程序应该是可以在硬件上运行的。不错这也就没有为什么不能在ubuntu上运行这回事了,压根和ubuntu没任何关系。
如果你不用操作系统提供的任何东西,那程序应该是可以在硬件上运行的。不错这也就没有为什么不能在ubuntu上运行这回事了,压根和ubuntu没任何关系。
#2
你写的是操作系统上跑的程序,不是操作系统本省。
#3
操作系统对自己可执行文件的调度方式是不一样的,参考http://www.it165.net/os/html/201409/9304.html,而Windows下的exe文件的处理又是另外一种方式。
#4
编译方式以及系统调用决定了
#5
你编完的东西实在操作系统上运行的。windows提供的系统函数和ubuntu一样么?
如果你不用操作系统提供的任何东西,那程序应该是可以在硬件上运行的。不错这也就没有为什么不能在ubuntu上运行这回事了,压根和ubuntu没任何关系。
也就是说:百度上面说的生成可执行的机器语言代码,这个机器语言代码其实还是要调用操作系统的给的接口是吗?麻烦您了
#6
你编完的东西实在操作系统上运行的。windows提供的系统函数和ubuntu一样么?
如果你不用操作系统提供的任何东西,那程序应该是可以在硬件上运行的。不错这也就没有为什么不能在ubuntu上运行这回事了,压根和ubuntu没任何关系。
也就是说:百度上面说的生成可执行的机器语言代码,这个机器语言代码其实还是要调用操作系统的给的接口是吗?麻烦您了
是的。
其实在你代码能调系统API之前,先要系统能认识你这个文件是可执行文件,并把它执行起来。可执行文件的格式,window和linux是不一样的。
#7
底层指令相同是对的
但是在底层架构的上面还有一层操作系统层,要知道你的程序是跑在os层,而不是直接在底层架构上跑的,简单的理解就是,os是负责连接你程序和底层的架构的。
所以不同的操作系统在沟通你的程序和底层是有所不同的,造成了这种问题
但是在底层架构的上面还有一层操作系统层,要知道你的程序是跑在os层,而不是直接在底层架构上跑的,简单的理解就是,os是负责连接你程序和底层的架构的。
所以不同的操作系统在沟通你的程序和底层是有所不同的,造成了这种问题
#8
如题,在网上查了下
百度上说:高级语言经编译最终生成可执行的机器码文件
wiki上说:有一些编译器输出的代码,将运行于与编译器所在相同类型的计算机和操作系统之上,这种编译器叫做本地编译器
疑问:
1.如果最终生成可执行文件里面都是机器码,也就是机器可以识别的代码,指的是指令集吗?
2.如果是cpu指令集,那么同一台X86架构的计算机装的双系统(windows,ubuntu),在windows下编译生成的文件为什么不能在ubuntu下不能运行呢?
希望有大侠指点一下,非常感谢
有空参考我的博文: http://blog.csdn.net/binaryhead/article/details/41083927,希望对你有帮助。