Linux和Windows兼容
1. 介绍
我们知道Linux上的应用程序是ELF格式的,而Windows则是PE格式
所以要解决这个问题首先二进制加载问题;其次,就是API问题,两者的API完全不同要实现兼容,就需要构建一个虚拟层,来实现两者API之间的转换
这里谈到的兼容指的是二进制兼容,即
~ Windows APP on Linux
~ Linux APP on Windows
2. 开源项目
2.1 Windows APP on Linux
1. Wine (Wine Is Not an Emulator)
Wine是一款Linux系统平台下的模拟器软件,其实现原理是將Windows API调用翻译成为动态的POSIX调用
2. Cygwin / MinGW
Cygwin是一个在windows平台上运行的unix模拟环境
Cygwin包括一套库,该库在Win32系统下实现了POSIX系统调用的API;还有一套GNU开发工具集
MinGW(Minimalist GNU for Windows),又称mingw32
是将GCC编译器和GNU Binutils移植到Win32平台下的产物,包括一系列头文件(Win32API)、库和可执行文件
3. Longene
Longene不同于Wine在应用层来实现转换Windows API,它是在内核里实现兼容
其原理是将Linux内核进行修改,以从内核上来实现对Windows API的兼容
更多信息,参考<Longene whitebook>
2.2 Linux APP on Windows
1. coLinux
CoLinux是在Windows上能够运行的linux(正确地说是Linux内核)
是Linux Kernel的一个移植版本,以在windows下一个进程运行,来支持Linux应用程序
基于从coLinux的项目有andLinux
2. atratus
Atratus可以让你在Windows下运行Linux的二进制执行文件
它包含 ELF 二进制加载器、libc 实现和一个系统调用转换器
3. LINE
LINE Is Not an Emulator
LINE executes unmodified Linux applications on Windows by intercepting Linux system calls
2.3 操作系统
ReactOS: 可以说是开源版本的Windows,研究它对于理解Windows的原理是不错的选择
Contiki: 一个小型、开源、极易移植的多任务电脑操作系统,专门设计以适用于一系列的内存受限的网络系统
NuttX: 是一个实时操作系统(RTOS), 强调标准兼容和小型封装, 遵循Posix和ANSI标准, 主要用于工业控制领域
Zephyr: 是由Linux基金会托管的开源协作项目, 目标是构建一个针对资源受限设备的小型、可裁剪的实时操作系统(RTOS)
Mynewt: 是一个社区驱动的模块化操作系统, 用于资源受限嵌入式环境的操作系统应用
参考:
<IoT In five days>
<Comparison of real-time operating systems>
Linux和Windows兼容的更多相关文章
- 个人项目-WC(C/C++ 兼容Linux和Windows)
一.Github地址 https://github.com/S-TRAVELER/WC 实现的功能: 支持 -c 支持 -w 支持 -l 支持 -s 支持 -a 图形界面 多参数(文件名或通配符表达式 ...
- 【热文】 为什么很多硅谷工程师偏爱 OS X,而不是 Linux 或 Windows?
校对:伯乐在线 - 黄利民 链接: 1. Why do most of the developers in Silicon Valley prefer OS X over Linux or Windo ...
- 在Linux和Windows的Docker容器中运行ASP.NET Core
(此文章同时发表在本人微信公众号"dotNET每日精华文章",欢迎右边二维码来关注.) 译者序:其实过去这周我都在研究这方面的内容,结果周末有事没有来得及总结为文章,Scott H ...
- 【转】linux和windows下安装python集成开发环境及其python包
本系列分为两篇: 1.[转]windows和linux中搭建python集成开发环境IDE 2.[转]linux和windows下安装python集成开发环境及其python包 3.windows和l ...
- XAMPP(Linux版-x86兼容)官网下载
欢迎光临 XAMPP 的 Linux 版 (x86 兼容处理器版)顺便提一下:该软件以前被称作 LAMPP,但为了避免误解,我们将其重名命为 »XAMPP 的 Linux 版«.所以,如果您在寻找 L ...
- (翻译)使用Api分析器与Windows兼容包来编写智能的跨平台.NET Core应用
本文翻译自Scott Hanselman博客: https://www.hanselman.com/blog/WritingSmarterCrossplatformNETCoreAppsWithThe ...
- 【转载】LINUX 和 WINDOWS 内核的区别
LINUX 和 WINDOWS 内核的区别 [声明:欢迎转载,转载请注明出自CU ACCESSORY http://linux.chinaunix.net/bbs/thread-1153868-1-1 ...
- Linux与Windows远程互访(使用Rdesktop与SSH)
工作的时候经常使用Redhat系列系统,而平常娱乐文档都是在windows平台上进行.因此实现linux与windows远程互访也是很有必要的事情. 本文将介绍如何实现Linux与Windows的远程 ...
- linux系统PKWindows系统,从各方便分析linux和Windows的优劣
服务器系统linux系统和linux系统哪个好用,公说公有理婆说婆有理,今天鼎峰凡凡大概对Linux系统与Windows系统的优缺点PK!可以从以下几个方面来看 ①成本 赞成Linux的声音Linu ...
随机推荐
- JavaScript 日期权威指南
简介 JavaScript通过强大的对象为我们提供日期处理功能:日期. 本文确实_不是_谈论 Moment.js ,我认为它是处理日期的最佳库,你应该在处理日期时几乎总是使用它. Date对象 Dat ...
- web前端的环境配置
1.1.WEB开发的相关知识 WEB,在英语中web即表示网页的意思,它用于表示Internet主机上供外界访问的资源. Internet上供外界访问的Web资源分为: 静态web资源(如html 页 ...
- python模块之collections模块
计数器 Counter 计数元素迭代器 elements() 计数对象拷贝 copy() 计数对象清空 clear() from collections import Counter #import ...
- Appium环境搭建及“fn must be a function”问题解决
由于appium在线安装比较困难,大多数应该是由于FQ造成的吧,索性直接下载appium安装包:http://pan.baidu.com/s/1bpfrvjD nodejs下载也很缓慢,现提供node ...
- Django基于Pycharm开发之三[命名空间 与过滤器]
关于命名空间的问题,在project项目中,我们可以设置路由类似于: from django.conf.urls import url,includefrom django.contrib impor ...
- 使用数组的splice方法以及循环嵌套来实现数组去重
javascript代码如下 <script type="text/javascript"> var arr = [1,2,3,4,5,6,5,4,3,7,8,9, ...
- Gradle task
本文来自网易云社区 作者:孙有军 1:gradle脚本是使用groovy语言写的(DSL),groovy中有一个重要的概念闭包(Closure),Closure是一段单独的代码块,它可以接收参数,返回 ...
- 码农与UI沟通的日常
事情是这样的,这是一个兴趣群组的效果图. 我看了一眼没有帖子时的提示,觉得这样的提示 不走心 不能展现出我们团队对于人生及世界的深度理解和高尚的品格. 于是,我选择了表达内心的真实感受. 我觉得这完美 ...
- app分享代码
友推是一款是面向移动应用的SDK分享组件,提供给开发者集成使用.通过友推,开发者可以轻松集成社会化分享功能,同时创建及管理推荐好友使用您应用的推荐奖励活动,用户推荐好友安装使用您的应用即可获得推荐奖励 ...
- Linux之我有你也有-共享平台NFS服务器搭建
Linux之我有你也有-共享平台NFS服务器搭建 最近因工作需要,所以要搭一个共享的服务器用于存储.实现你有我有大家有的共享的和谐局面.想到了NFS-Network File System.接下来我便 ...