我知道在linux和Windows之间交叉编译的几个项目。
Wine项目非常适合在Linux内运行Windows应用程序。
and Linux是在Windows内运行的Linux。
我的问题是,我们可以编译一个完整的Linux操作系统与Windows编译器(如mingw32,visual studio,…),以获得一个完全兼容的Windows PE可执行文件格式的Linux系统?
关于复制dll节到内存
x64组装优化
RTTI元数据存储在可执行文件中的位置在哪里?
如何获得PE文件签名抵消?
对象符号覆盖库符号?
从Windows PE文件修改.rdata unicodestring
C ++链接器如何处理对静态string的引用?
正如葡萄酒所示,PE格式并不是真正的兼容性问题。
PE只定义在加载时如何将程序拼凑在一起。 在windows下,RUNDLL解释它,将所有程序段加载到内存中,将所有支持的dll加载到内存中,并修补函数指针,以便有一个坐在内存中的程序准备就绪。 (有关更多详细信息,请参见http://msdn.microsoft.com/en-us/library/ms809762.aspx 。 它是一个很好的阅读! )
几乎没有停止你写一个内核模块来完成这一切。 有关上面链接的页面的细节可能不难,有人可能已经完成了。
真正的问题是操作系统的基础问题。 即使linux可以加载一个PE,在文件名(或/)和权限模型(这是不同的)和linux下不存在的Windows注册表的基本区别也会有问题。 这是在进入GUI的不同窗口模型之前。
因此,在linux下运行windows程序的任务不是关于程序加载器,而是关于在Linux下模拟所有的windows dll。 据我了解,这是葡萄酒的主要核心。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。