首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

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最开始就是Windows Emulator的缩写,PHP最开始也是Personal Home Page的缩写,但是后来功能逐渐和全称字面意思脱离,于是就改了。

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

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

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20230213A01GYE00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券