当前位置:  技术问答>linux和unix

为什么Linux下最简单的可执行文件,就不能在Windows下直接运行呢?

    来源: 互联网  发布时间:2015-08-29

    本文导语:  main() { printf("Test"); } 这个最简单的程序,在Linux下编译了以后,应该就已经是二进制的机器码了,而且也没调用什么Linux特有的的函数啊,是ANSI C,为什么在Window下就是不能直接运行呢? 在Window下编译的机器码和Linux下有什么...

main()
{
printf("Test");
}
这个最简单的程序,在Linux下编译了以后,应该就已经是二进制的机器码了,而且也没调用什么Linux特有的的函数啊,是ANSI C,为什么在Window下就是不能直接运行呢?
在Window下编译的机器码和Linux下有什么本质的不同呢?
多谢!

|
可执行文件也有格式的,里面除了机器码,还有
一些特定系统设定的信息
Windows下面就有好几种Exe文件格式

如果真像楼主说的,只有指令的话,那当然可以互换的,但事实并非如此

另外,操作系统实际上是虚拟机,很多跟io有关的操作会被系统统一管理
比如Windows就不允许你直接写屏幕,你的printf要完成操作,必需通过
Win16虚拟机(又一层虚拟机),再通过windows内核,最后才能跟硬件打交道的
呵呵,看看吧

|
虽然机器码可能相同但可执行文件的文件格式不同,包括启动码及配置参数。

|
把两个可执行文件放在一块,比较一下大小,然后用Linux的differ命令比较一下,最后在Windows下,分别用UltraEdit打开比较一下。
Windows的开头可能是4D5A,(对应ASCII码"MZ")

|
打开二进制代码看看就知道,事实上这样简单的程序在做你想它做的事情之前,系统已经做了很多你所不知道的事情了。

|
Linux的目的程序的框架结构与Windows的完全不一样。库函数的链接机制也完全不一样。
不仅如此。同是Linux,如果一台是X86机,另一台是PowerPC机,也不行的。
一个目的码要移植到另一台上运行,最最起码的两个条件:一是同一指令系统,二是同一操作系统。

    
 
 

您可能感兴趣的文章:

  • linux下通过crond实现自动执行程序
  • 菜鸟请教:linux 直接执行可执行文件
  • linux下nm命令(显示可执行文件的符号信息)介绍以及常见nm命令用法举例
  • 如何在LINUX中在系统启动后自动执行一个执行一个程序?
  • Linux下指定运行时加载动态库路径及shell下执行程序默认路径
  • linux在脚本执行命令和直接在命令行执行命令有什么区别
  • linux下不使用sudo命令执行docker的操作步骤
  • linux设备驱动执行完__init之后就执行__devinit吗
  • 很菜的问题——Linux(RedHat8)下的齿轮图标程序如何执行,是什么shell命令可以执行它?
  • 请问LINUX7.2下,哪条命令是查看系统上曾经执行过的执行命令?(包括启动以前的)
  • 如何用JAVA执行本机Linux操作系统的可执行文件?一定给分!在线等待!
  • linux shell脚本 linux crond 的一个鲜为人知的错误,单独执行没问题,放到crond 中就执行出错 试问高手们哪个环节出错
  • 入门的问题。在Linux上如何执行一个可以执行的文件?
  • Linux下的执行文件是什么概念,是象Dos里的2进制机器码吗,怎么看一个文件是不是执行文件.
  • linux 中可执行程序执行时./a.out怎么去掉 "./" ? ? ?
  • 我需要一个模型,在 LINUX C 下。实现线程间的控制,执行,阻塞,再执行。。。。。不知道如何实现。
  • Linux下自动执行命令的问题,哪位Linux高手帮帮我.
  • 小弟刚学linux,问个超级幼稚的问题~-linux下怎么执行程序?
  • 可以让soleris下编译的可执行文件运行在linux下吗???
  • window下通过ftp执行linux脚本?
  • linux 下子线程不能执行的问题?
  • 嵌入式linux开发:一段代码在windows平台用VC编译运行正常,在linux平台用gcc编译运行正常,但是用arm-linux-gcc编译在嵌入式板子上运行就不正常.
  • 弱弱地问,能否让WINDOWS下自动运行的多媒体光盘在LINUX下也自动运行播放(LINUX下可一看到光盘上文件)
  • 我的linux程序 如何 在pc机器上运行。现在我用arm-linux-g++ 编译后的程序在我的嵌入设备上运行。
  • 程序在windows下用visual运行正常,如何才能在linux下运行??
  • 怎样让linux启动后不运行桌面而是直接运行某个应用程序呢?
  • Linux下的程序是在内存中运行的吗?为什么在程序运行的时候可以删除程序文件?
  • linux编写一个脚本判断程序是否在运行,如果没运行就重启这个软件。
  • 请问如何让Linux 0.11运行?它运行后是怎样的?谢谢!!
  • 新手提问:grep在linux中运行跟在php运行返回结果不一样
  • Linux开关机时想让脚本运行却运行不了?
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • Windows和Linux下C++类成员方法作为线程函数方法介绍
  • x-windows如何安装在linux(rdehat9)上面呢,是不是x-windows也分windows和linux版本的吗?
  • tar.xz如何解压:linux和windows下tar.xz解压命令介绍
  • windows 和linux双系统,重装windows后,无法启动linux?
  • MTU介绍以及在windows和linux下怎么设置MTU值
  • linux和windows串口问题!?linux向windows端发送,第一次write正常,继续write,windows接收到的就变成乱码了,这是什么原因??????
  • Linux和windows下用mysql c++ library操作Mysql数据库
  • 请问windows 2000怎么访问linux?我要从linux下拷文件到windows下
  • 在windows中的VMware装了个linux,主板有两个串口,能做windows和linux的串口通信测试么,怎么测试这两个串口在linux是有效
  • windows,linux如何实现文件共享(windows,linux安在同一台机)?
  • 用linux(服)windows(客)传输文件,windows端可以,linux端不可以,怎么回事???
  • 晕哦,刚在windows下用虚拟机装个linux,不知道怎么把windows下的文件复制到linux里????
  • Windows2000和Linux双操作系统,Linux系统有问题,我直接把Linux分区删除后,Windows2000进不去了,怎么办???
  • 同机装有Windows和Linux两套系统(先装Win后装Linux),如何使计算机使用Windows的启动模块而不是Linux的启动模块?
  • 请指点: 在windows下能否通过程序来获取linux下的用户列表,甚至通过自己写的windows程序界面增加修改linux的用户
  • 怎么在Linux下改windows系统文件啊,我把windows的BOOT.INI改了,windows启动不了
  • 请问如何在WINDOWS中访问linux下的文件,并把Windows下的文件复制到linux下的分区中
  • ■■有关RH Linux的在线更新(OnLine Update)?Linux下有没有如Windows下的Windows Update一样的工具呀,可下载补丁和Update组件?
  • 请指点: 在windows下能否通过程序来获取linux下的用户列表,甚至通过自己写的windows程序界面增加修改linux的用户 100分相赠
  • 装了Linux和Windows,怎样默认进入Windows
  • 郁闷死了。第一次安装Linux,和Windows XP并存。装完之后,直接进入到了Windows XP,Linux进不去。这怎么解决?
  • linux c/c++ IP字符串转换成可比较大小的数字
  • 在win分区上安装linux和独立分区安装linux有什么区别?可以同时安装吗?(两个linux系统)
  • linux哪个版本好?linux操作系统版本详细介绍及选择方案推荐
  • 在虚拟机上安装的linux上,能像真的linux系统一样开发linux程序么?
  • secureCRT下Linux终端汉字乱码解决方法
  • 我重装window后,把linux的引导区覆盖了,进不了linux怎么办?急啊,望热心的人帮助 (现在有linux的盘)
  • Linux c字符串中不可打印字符转换成16进制
  • 安装vmware软件,不用再安装linux系统,就可以模拟linux系统了,然后可以在其上学习一下LINUX下的基本操作 了?
  • Linux常用命令介绍:更改所属用户群组或档案属性
  • 红旗Linux主机可以通过127.0.0.1访问,但如何是连网的Win2000机器通过Linux的IP去访问Linux


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    linux和windows串口问题!?linux向windows端发送,第一次write正常,继续write,windows接收到的就变成乱码了,这是什么原因?????? iis7站长之家