社区
Linux/Unix社区
帖子详情
为什么Linux下最简单的可执行文件,就不能在Windows下直接运行呢?
ladykiller136
2004-12-28 03:31:05
main()
{
printf("Test");
}
这个最简单的程序,在Linux下编译了以后,应该就已经是二进制的机器码了,而且也没调用什么Linux特有的的函数啊,是ANSI C,为什么在Window下就是不能直接运行呢?
在Window下编译的机器码和Linux下有什么本质的不同呢?
多谢!
...全文
461
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
打赏
举报
回复
想不通啊,请大虾们多多指教啊!!
【Python】Pyinstaller打包
Linux
运行
文件,暴露配置文件
考虑到系统要用在正式环境上,所以还是选择Pyinstaller的打包方式,因为刚接触,所以很多地方不懂,比如需要把配置文件放在外面,要怎么打包才可以实现呢;
运行
的时候将config.ini与打包出来的
可执行文件
放在同一目录下面,按照需要修改config.ini中的配置,然后再
运行
程序,系统中读取config.ini的地方就可以获取到你修改的配置了。Pyinstaller可以将python程序打包成
可执行文件
,在
windows
上是exe文件,在
linux
上是二进制
可执行文件
。查看日志的生成情况。
Linux
下制作可执行的JAR文件包
Linux
下制作可执行的JAR文件包 制作可执行的JAR文件包及jar命令详解 常常在网上看到有人询问:如何把 java 程序编译成 .exe 文件。通常回答只有两种,一种是制作一个可执行的 JAR 文件包,然后就可以像.chm 文档一样双击
运行
了;而另一种是使用 JET 来进行 编译。但是 JET 是要用钱买的,而且据说 JET 也不是能把所有的 Java 程序都编译成执
为什么
Linux
上可以删除正在
运行
的程序呢?
在跑gem5时发现一个神奇的现象:当已经开始
运行
gem5跑仿真实验时,假设为仿真实验A,试验
运行
时间很长,当实验还没结束,此时如果再对源码修改并编译之后再跑别的实验(假设为仿真实验B)是不影响第一个仿真实验A的进行的。 (ps:实验环境 ubuntu 14.04) 为什么呢? 最最
简单
的理解,程序在
运行
实验A时其代码以及数据已经被加载到内存中去了,所以此时重新编译gem5(也即覆盖掉实验A的...
分析
linux
下如何
运行
一个执行文件
导读:和
windows
下的PE结构是一样的,安全逆向分析也需要这一块,这和云计算技术虚拟化也相关本文只为整理思路,供自己日后参考。现在就从从一个执行文件a.out的
运行
开始,自上而下地分析
linux
是如何
运行
一个执行文件的。1、首先,需要了解一下a.out这个目标文件。a.out在
linux
下是ELF(Executable Linkable Format)文件格式,该目标文件由一个文件头、代码段、...
【gcc编译优化系列】各操作系统平台下的
可执行文件
格式介绍
目 录 一 重要知识点 二 本文重点内容 三 gcc相关知识补充 四
Windows
系列(Win7、Win8.1、Win10…) 五
Linux
系列(Ubuntu、RedHat、Kali
Linux
…) 六 Mac 系列(MacOS & iOS) 七 更多分享 一 重要知识点 -
可执行文件
指的是可以由操作系统进行加载执行的文件; -
可执行文件
的文件格式常见有: exe 和 dll(
Windows
系列)、elf(
Linux
系列)和 Mach-O(Mac系列);..
Linux/Unix社区
23,217
社区成员
74,540
社区内容
发帖
与我相关
我的任务
Linux/Unix社区
Linux/Unix社区 应用程序开发区
复制链接
扫一扫
分享
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章