社区
Linux/Unix社区
帖子详情
为什么Linux下最简单的可执行文件,就不能在Windows下直接运行呢?
ladykiller136
2004-12-28 03:31:05
main()
{
printf("Test");
}
这个最简单的程序,在Linux下编译了以后,应该就已经是二进制的机器码了,而且也没调用什么Linux特有的的函数啊,是ANSI C,为什么在Window下就是不能直接运行呢?
在Window下编译的机器码和Linux下有什么本质的不同呢?
多谢!
...全文
463
19
打赏
收藏
为什么Linux下最简单的可执行文件,就不能在Windows下直接运行呢?
main() { printf("Test"); } 这个最简单的程序,在Linux下编译了以后,应该就已经是二进制的机器码了,而且也没调用什么Linux特有的的函数啊,是ANSI C,为什么在Window下就是不能直接运行呢? 在Window下编译的机器码和Linux下有什么本质的不同呢? 多谢!
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
19 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
ladykiller136
2004-12-30
打赏
举报
回复
多谢各位,极大的开阔了思路,散分了!
beepbug
2004-12-29
打赏
举报
回复
Linux的目的程序的框架结构与Windows的完全不一样。库函数的链接机制也完全不一样。
不仅如此。同是Linux,如果一台是X86机,另一台是PowerPC机,也不行的。
一个目的码要移植到另一台上运行,最最起码的两个条件:一是同一指令系统,二是同一操作系统。
转转耳朵
2004-12-29
打赏
举报
回复
打开二进制代码看看就知道,事实上这样简单的程序在做你想它做的事情之前,系统已经做了很多你所不知道的事情了。
hoyt
2004-12-29
打赏
举报
回复
我先这个就同最简单的“你好”汉语对一个不懂汉语的人来说就是听不懂的
道理一样吧。
欢迎访问我的个人网站 www.linuxc.net
superAfx
2004-12-29
打赏
举报
回复
把两个可执行文件放在一块,比较一下大小,然后用Linux的differ命令比较一下,最后在Windows下,分别用UltraEdit打开比较一下。
Windows的开头可能是4D5A,(对应ASCII码"MZ")
whoho
2004-12-29
打赏
举报
回复
可执行文件也有格式的,里面除了机器码,还有
一些特定系统设定的信息
Windows下面就有好几种Exe文件格式
如果真像楼主说的,只有指令的话,那当然可以互换的,但事实并非如此
另外,操作系统实际上是虚拟机,很多跟io有关的操作会被系统统一管理
比如Windows就不允许你直接写屏幕,你的printf要完成操作,必需通过
Win16虚拟机(又一层虚拟机),再通过windows内核,最后才能跟硬件打交道的
呵呵,看看吧
yangl2000
2004-12-29
打赏
举报
回复
windows使用的是PE文件格式,而linux是使用elf格式
X_worm
2004-12-29
打赏
举报
回复
虽然机器码可能相同但可执行文件的文件格式不同,包括启动码及配置参数。
HZHZHXCNXF
2004-12-29
打赏
举报
回复
我想
应该是操作系统的内河不一样
那么调用的函数不一样
那么实现的方法和机器指令都不一样了吧
wwayya
2004-12-28
打赏
举报
回复
可执行文件的格式是有区别的!!!!
quil
2004-12-28
打赏
举报
回复
内容也不一样!!
ladykiller136
2004-12-28
打赏
举报
回复
我是说在Linux下编译以后的可执行文件,放在Window下的使用问题
ladykiller136
2004-12-28
打赏
举报
回复
编译的可执行文件内容肯定是一样的吧,难道二进制文件从Linux转道Window读取内容就变了吗?
alpineflame
2004-12-28
打赏
举报
回复
所用编译器不一样,生成的可执行二进制代码也不一样
ladykiller136
2004-12-28
打赏
举报
回复
我想不通的就是机制怎么个不一样法,因为是在同一个机器上,他们的机器码又是一样的,
也没调用什么和操作系统相关的函数啊,为什么就不能执行呢?
quil
2004-12-28
打赏
举报
回复
二进制就一样吗?格式差远了
blder
2004-12-28
打赏
举报
回复
机制不同
实现方法:一是使用Java;二是在windows下使用Cygwin
ladykiller136
2004-12-28
打赏
举报
回复
看来问题太简单啊,可是我的确想不明白啊!
ladykiller136
2004-12-28
打赏
举报
回复
想不通啊,请大虾们多多指教啊!!
C语言笔记01(7.15-7.18)
C语言基本知识点思维导图
【智能汽车竞赛】摄像头组-长春理工大学-天狼五号技术赛方案.docx
【智能汽车竞赛】摄像头组-长春理工大学-天狼五号技术赛方案.docx
MATLAB中计算可达矩阵的实现方法
资源下载链接为: https://pan.quark.cn/s/abbae039bf2a 请用MATLAB编程实现从邻接矩阵计算可达矩阵。
hadoop-mapreduce-client-jobclient-2.7.3.jar中文文档.zip
1、压缩文件中包含: 中文文档、jar包下载地址、Maven依赖、Gradle依赖、源代码下载地址。 2、使用方法: 解压最外层zip,再解压其中的zip包,双击 【index.html】 文件,即可用浏览器打开、进行查看。 3、特殊说明: (1)本文档为人性化翻译,精心制作,请放心使用; (2)只翻译了该翻译的内容,如:注释、说明、描述、用法讲解 等; (3)不该翻译的内容保持原样,如:类名、方法名、包名、类型、关键字、代码 等。 4、温馨提示: (1)为了防止解压后路径太长导致浏览器无法打开,推荐在解压时选择“解压到当前文件夹”(放心,自带文件夹,文件不会散落一地); (2)有时,一套Java组件会有多个jar,所以在下载前,请仔细阅读本篇描述,以确保这就是你需要的文件。 5、本文件关键字: jar中文文档.zip,java,jar包,Maven,第三方jar包,组件,开源组件,第三方组件,Gradle,中文API文档,手册,开发手册,使用手册,参考手册。
jetty-server-9.4.44.v20210927.jar中文文档.zip
1、压缩文件中包含: 中文文档、jar包下载地址、Maven依赖、Gradle依赖、源代码下载地址。 2、使用方法: 解压最外层zip,再解压其中的zip包,双击 【index.html】 文件,即可用浏览器打开、进行查看。 3、特殊说明: (1)本文档为人性化翻译,精心制作,请放心使用; (2)只翻译了该翻译的内容,如:注释、说明、描述、用法讲解 等; (3)不该翻译的内容保持原样,如:类名、方法名、包名、类型、关键字、代码 等。 4、温馨提示: (1)为了防止解压后路径太长导致浏览器无法打开,推荐在解压时选择“解压到当前文件夹”(放心,自带文件夹,文件不会散落一地); (2)有时,一套Java组件会有多个jar,所以在下载前,请仔细阅读本篇描述,以确保这就是你需要的文件。 5、本文件关键字: jar中文文档.zip,java,jar包,Maven,第三方jar包,组件,开源组件,第三方组件,Gradle,中文API文档,手册,开发手册,使用手册,参考手册。
Linux/Unix社区
23,217
社区成员
74,540
社区内容
发帖
与我相关
我的任务
Linux/Unix社区
Linux/Unix社区 应用程序开发区
复制链接
扫一扫
分享
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章