环球时讯:Linux 原生不能运行 exe 格式的文件

来源:东方资讯


(资料图片)

现在大家的生活办公已经离不开电脑了,在经常和电脑打交道的小伙伴会发现,Linux原生不能运行exe格式的文件。

因为exe里面存放的符号地址linux是不认的,在转化成机器码这一步,printf的地址已经被焊死了。而 windows的 printf位于 msvcrt.dll而不是 linux下的 libc.so.6,所以地址必然不同。巨硬搞linux的程序在windows上跑肯定容易,毕竟windows和linux对巨硬来说是透明的,反过来的事,巨硬肯定不可能干砸自己饭碗的事,民间搞的话也就只有linux透明。

wsl其实是起了个虚拟机,除了api,syscall层面的东西,还依赖最底层的driver,dev。所以一般的应用程序可以直接跑,依赖driver的程序比如cuda一直还支持不了,除了GNU是开始如此的,其他的都是后改的。Wine最开始就是WindowsEmulator的缩写,PHP最开始也是PersonalHomePage的缩写,但是后来功能逐渐和全称字面意思脱离,于是就改了。

计算机硬件是由操作系统OS管理的,你可以理解exe或者app是由操作系统控制的一个动态模块。因此一个app的加载运行,申请资源,最后退出清理全部必须由OS进行调配。

EXE程序在Linux上直接运行的最大障碍是在于其依赖的一系列动态库,如果程序依赖于一些奇怪版本的.netframework的话在非特定版本windows上运行都会有困难,更别提可能牵涉到的第三方库了。

举报/反馈

标签:

推荐

财富更多》

动态更多》

热点