×

linux怎么运行可执行文件 linux怎么运行可执行文件的程序

前端技术网 前端技术网 发表于2024-01-05 00:04:37 浏览2406 评论0

抢沙发发表评论

一、怎么运行文件

在上古时代,确实有纯机械指令的文件,叫.com

直接读入内存然后把IP指针指过去就可以运行了。

linux怎么运行可执行文件 linux怎么运行可执行文件的程序

不过当时电脑是16位的,内存只支持到2^16=64k,这也是.com文件大小的上限。

后来为了突破这个限制,对内存实行分段(segment)管理。每64k算一个段,用另外一个寄存器来表示段地址。所以那个时候表示内存中的一个位置大概像这样:AAAA:BBBB

硬件上虽然支持了更多的内存,但.com仍然是不行的。因为.com只有纯机器码,超过64k的部分也就是说必须加载到其他段的代码程序自己都找不到。

为了解决这个问题设计了.exe格式。.exe主要部分还是机械码,但是有很多辅助的部分:哪部分代码加载到哪一段之类的。说点题外话就是.exe运行时也不是全部加载到内存,而是文件头怎么写的就怎么加载。所以.exe文件后面接入其他的文件不影响原来的.exe运行。

感兴趣的童鞋可以自己用文件工具把其他内容写到exe文件后面看看还能不能正常执行。

这一特性其实挺常用的,往好了方面用就是自解压包,其实就是把压缩包接到一个自解压程序后面。往坏了用就是电脑病毒呗,感染exe文件就是把自己接到原来exe文件末尾,然后修改文件头要求后面的代码优先调入,病毒代码执行完了再调入原来的exe。

linux怎么运行可执行文件 linux怎么运行可执行文件的程序

当然这是DOS的exe,跟Windows的exe有那么一点点不一样,不过大同小异。你可以粗略的理解成office2009写出来的文档和office2019写出来的文档的区别。

那Linux可不可以运行exe格式的文件呢?当然是可以的,只要按照exe文件格式把它加载到内存然后把IP指针指过去就行了。为难之处在于:exe必然有大~~~量的系统调用。Linux自然无法提供这些系统调用,那就没有办法运行喽。

如果想运行exe的话,重点其实不在于exe文件格式,以及怎么调入内存。重点在于可以系统能不能提供这些系统调用。可这谈何容易?相当于是把整个Windows做了一遍。但即使是这样的东西也仍然有人做出来了,就是Wine。

那为什么wine无法运行所有exe呢?大概有两个原因

第一是因为有人不守规矩,一方面是微软系统调用实现的方式跟手册上写的不一样(最近很少了),一方面是很多国产厂商倾向于使用各种“未公开的API”或者一些非正常的手段来实现一些罕见的功能来彰显自己的技术(最近也少了)。

第二则是windows的杀手锏之一DirectX,这个暂时开源实现还有困难。

这就导致了其实Windows也不能完美的运行所有的exe文件。比如Win3.1/9x运行DOS的exe就有可能出问题。XP运行9x的exe也可能出问题。要不咋有那么多人赖着不升级呢。

所以总体来说就是越守规矩的exe越容易拿到Linux下运行。

国内那些不太守规矩的玩意(比如QQ),在对wine针对性优化之后也是可以运行的。比如deepin版的wine。

最后

Wine已经做的很好了,如果未来有一天Windows开源了或者Windows下的软件都守规矩了,你就能看到Linux直接运行Windows的程序了。其实微软也在做这方面的努力,尤其是换了掌门人之后。比如.netcore和uwp。

所以我们等等看吧,没准就等到了呢。

二、统信系统如何运行exe文件

统信系统是一个基于Linux操作系统的企业级应用平台,无法直接运行Windows的exe文件。如果需要运行exe文件,可以通过安装Wine软件来实现,Wine是一款免费的兼容Windows程序的软件,可以让统信系统运行大部分的Windowsexe文件。具体操作步骤如下:

1.安装Wine软件。可以通过命令行方式安装,输入命令sudoapt-getinstallwine即可。

2.下载需要运行的exe文件,并将其放入统信系统中。

3.打开终端,输入命令wine/path/to/exe/file.exe(其中/path/to/exe/file.exe是exe文件的路径),回车即可运行exe文件。

三、LINUX里怎样运行exe文件

通常情况下,任何基于Windows的exe程序都不能在LINUX下运行,这是因为它们的内核是不同的。但是可以通过在Linux上安装wine来运行exe程序。

Wine(“WineIsNotanEmulator”的首字母缩写)是一个能够在多种POSIX-compliant操作系统(诸如Linux,macOS及BSD等)上运行Windows应用的兼容层。Wine不是像虚拟机或者模拟器一样模仿内部的Windows逻辑,而是将WindowsAPI调用翻译成为动态的POSIX调用,免除了性能和其他一些行为的内存占用,让你能够干净地**Windows应用到你的桌面。

安装WineHQ安装包(Ubuntu18.04.264位系统为例)

如果您之前安装过来自其他仓库的Wine安装包,请在尝试安装WineHQ安装包之前删除它及依赖它的所有安装包(如:wine-mono、wine-gecko、winetricks),否则可能导致依赖冲突。

如果使用的是64位系统,请开启32bit架构支持(如果之前没有开启的话):

#sudodpkg--add-architecturei386

下载添加仓库密钥:

#wget-nchttps://dl.winehq.org/wine-builds/winehq.keysudo

#apt-keyaddwinehq.key

添加仓库:

#sudoapt-add-repository'debhttps://dl.winehq.org/wine-builds/ubuntu/bionicmain'

更新安装包:

#sudoaptupdate

安装Wine:

sudoaptinstall--install-recommendswinehq-stable

至此wine就安装完成了。下面安装exe程序(以QQ为例)

下载以.exe为后缀的QQ可以执行文件到桌面,右击该可执行文件选择“使用其他程序打开(A)”

在弹出的对话框里选择“WineWindowsProgramLoader”

接下来就和在Windows下安装软件一样直到安装完成

注意事项:如非必要,一般不太建议在Linux上运行exe程序,可能会遇到各种各样的的Bug。

四、Linux可以直接运行EXE文件吗

exe文件执行是要依靠Windows系统的库,linux系统肯定不支持。不过如果在linux安装Wine软件,可以安装运行一般小型的Windows程序。Wine的安装;1.安装wineubuntu官方自带了wine,但是推荐用winehq官方提供的最新版本wine,新版本解决了很多以前显得麻烦的问题。

接下来,可以打开一个终端,执行:sudoapt-getupdatesudoapt-getinstallwine安装完以后,用鼠标右键点击文件,选这“使用其他程序打开”,在其中选这wine就可以运行了。

非常感谢您的阅读!我们希望本文对于解决您关于linux怎么运行可执行文件和linux怎么运行可执行文件的程序的问题提供了一些有价值的信息。如果您还有其他疑问,我们将很乐意为您提供进一步的帮助。