社区
Linux/Unix社区
帖子详情
为什么Linux下最简单的可执行文件,就不能在Windows下直接运行呢?
ladykiller136
2004-12-28 03:31:05
main()
{
printf("Test");
}
这个最简单的程序,在Linux下编译了以后,应该就已经是二进制的机器码了,而且也没调用什么Linux特有的的函数啊,是ANSI C,为什么在Window下就是不能直接运行呢?
在Window下编译的机器码和Linux下有什么本质的不同呢?
多谢!
...全文
470
19
打赏
收藏
为什么Linux下最简单的可执行文件,就不能在Windows下直接运行呢?
main() { printf("Test"); } 这个最简单的程序,在Linux下编译了以后,应该就已经是二进制的机器码了,而且也没调用什么Linux特有的的函数啊,是ANSI C,为什么在Window下就是不能直接运行呢? 在Window下编译的机器码和Linux下有什么本质的不同呢? 多谢!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用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
中的
可执行文件
linux
下的可以
直接
执行的文件很多,它继承了unix的对
可执行文件
格式很开放的优势。unix或者
linux
中,对于程序的执行实际上并没有由内核 负责,就是说内核并不管哪些文件格式可以执行哪些不可以执行,内核只是
简单
地将一个
可执行文件
的加载和执行的任务交给了一个叫做解释器的东西,由该解释器负责文件的执行,这样
可执行文件
的格式就
简单
地与内核解耦了,这样只要提供解释器,
linux
便可以执行任何格式的文
为什么
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,219
社区成员
74,543
社区内容
发帖
与我相关
我的任务
Linux/Unix社区
Linux/Unix社区 应用程序开发区
复制链接
扫一扫
分享
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章