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兼容的更多相关文章

  1. 个人项目-WC(C/C++ 兼容Linux和Windows)

    一.Github地址 https://github.com/S-TRAVELER/WC 实现的功能: 支持 -c 支持 -w 支持 -l 支持 -s 支持 -a 图形界面 多参数(文件名或通配符表达式 ...

  2. 【热文】 为什么很多硅谷工程师偏爱 OS X,而不是 Linux 或 Windows?

    校对:伯乐在线 - 黄利民 链接: 1. Why do most of the developers in Silicon Valley prefer OS X over Linux or Windo ...

  3. 在Linux和Windows的Docker容器中运行ASP.NET Core

    (此文章同时发表在本人微信公众号"dotNET每日精华文章",欢迎右边二维码来关注.) 译者序:其实过去这周我都在研究这方面的内容,结果周末有事没有来得及总结为文章,Scott H ...

  4. 【转】linux和windows下安装python集成开发环境及其python包

    本系列分为两篇: 1.[转]windows和linux中搭建python集成开发环境IDE 2.[转]linux和windows下安装python集成开发环境及其python包 3.windows和l ...

  5. XAMPP(Linux版-x86兼容)官网下载

    欢迎光临 XAMPP 的 Linux 版 (x86 兼容处理器版)顺便提一下:该软件以前被称作 LAMPP,但为了避免误解,我们将其重名命为 »XAMPP 的 Linux 版«.所以,如果您在寻找 L ...

  6. (翻译)使用Api分析器与Windows兼容包来编写智能的跨平台.NET Core应用

    本文翻译自Scott Hanselman博客: https://www.hanselman.com/blog/WritingSmarterCrossplatformNETCoreAppsWithThe ...

  7. 【转载】LINUX 和 WINDOWS 内核的区别

    LINUX 和 WINDOWS 内核的区别 [声明:欢迎转载,转载请注明出自CU ACCESSORY http://linux.chinaunix.net/bbs/thread-1153868-1-1 ...

  8. Linux与Windows远程互访(使用Rdesktop与SSH)

    工作的时候经常使用Redhat系列系统,而平常娱乐文档都是在windows平台上进行.因此实现linux与windows远程互访也是很有必要的事情. 本文将介绍如何实现Linux与Windows的远程 ...

  9. linux系统PKWindows系统,从各方便分析linux和Windows的优劣

    服务器系统linux系统和linux系统哪个好用,公说公有理婆说婆有理,今天鼎峰凡凡大概对Linux系统与Windows系统的优缺点PK!可以从以下几个方面来看 ①成本  赞成Linux的声音Linu ...

随机推荐

  1. win 系统下制作U盘安装 linux系统

    win 系统制作U盘安装硬盘镜像用ultraiso_v9.5.3.2901将Centos.iso写进U盘.安装过程全程区分大小写.过低的ultraiso不能正确读取文件.本文所有资料均能在网上免费下载 ...

  2. php与js的crc32(支持中文)

    代码: <?php function myCrc32($string, $crc = 0) { $table = "00000000 77073096 EE0E612C 990951B ...

  3. PHP switch问题

    $a = 0; switch($a){ case $a > 7: echo 234; break; case $a > 2: echo 4556; break; default: echo ...

  4. JZOJ 3508. 【NOIP2013模拟11.5B组】好元素

    3508. [NOIP2013模拟11.5B组]好元素(good) (File IO): input:good.in output:good.out Time Limits: 2000 ms  Mem ...

  5. Head First Python (一)

    建立一个数组: cast = ["Cleese","Palin","Jones","Idle"] 列出数组有多少数据项: ...

  6. Android 停止调试程序

    现在我知道怎么停掉debug的Android程序了,很简单,进入ddms界面,对着你的进程,kill.

  7. Collection record

    复习大集合: 1.函数的参数:位置参数,关键字参数,动态参数 2.命名空间:内置命名空间,全局命名空间,局部命名空间 3.闭包函数:函数引用未定义的函数外非全局的变量叫做闭包,该函数称为闭包函数 4. ...

  8. cf982d Shark

    ref #include <algorithm> #include <iostream> #include <cstdio> #include <map> ...

  9. 极简配置phpstorm+xdebug进行断点调试

    以前调试的时候各种var_dump()就能得到结果,现在入手别人开发的工作,由于不了解业务和代码逻辑,又要去修改bug,就造成了修改bug效率低,所以又拾起来了xdbug,顺便总结了一下phpstor ...

  10. JS的跨域理解

    前言 周一的学院点开题被批的很惨,换了个校长,各种被抓严,班上已经有两个同学打算休学了.哎,这周的聚会可能是大家集聚的最后一次吧.熬着吧,还是学习我的前端,不管老板学校咋逼了,找个好工作才是王道.今天 ...