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. CentOS6 x86_64最小化安装优化脚本

    #!/bin/bash #centos6. x86_64系统最小化安装优化脚本 #系统基础优化,建议以root运行 if [ $USER != "root" ];then echo ...

  2. 关于debug

    2019-04-05  11:18:15 1. debug 需巧用两个工具 1.1  用‘#’把感觉会出错的代码段注释掉 多行注释有两种快捷操作: 在需要注释的多行代码块前后加一组三引号''' 选中代 ...

  3. django实现事务

    1.导入模块 from django.db import transaction 2.使用方法 with transaction.atomic(): User.objects.create(name= ...

  4. A1031 Hello World for U (20)(20 分)

    A1031 Hello World for U (20)(20 分) Given any string of N (>=5) characters, you are asked to form ...

  5. Sliding Window POJ - 2823

    Description An array of size n ≤ 106 is given to you. There is a sliding window of size k which is m ...

  6. MongoDB集群部署 - 带访问控制的分片副本集

    1. 前言 Ceilometer将meter.event等数据保存在MongoDB中,之前将MongoDB部署在控制节点上,使用三副本模式,时间长了发现meter数据爆炸式增长,区区2T的磁盘捉襟见肘 ...

  7. MySQL != 失效

    字段中包含 NULL 和 其他字符串值时, 字段既包含 NULL 也有字符串类型的值, 使用如下 SQL 无法获取值为 NULL 的部分 SELECT * FROM table_name WHERE ...

  8. 深入学习之mysql(四)聚合函数

    聚合函数:COUNT统计记录的条数.SUM求和函数.AVG求平均值.MAX求最大值.MIN求最小值   一.COUNT练习: 1.统计学校一共有多少个学生: mysql> SELECT COUN ...

  9. python 打印9*9乘法表

    # -*- coding: utf8 -*- # Author:wxq 1. for i in range(1,10): for j in range(1,i+1): print "%d*% ...

  10. ALPHA 冲刺(一)

    目录 组员情况 组员1(组长):胡绪佩 组员2:胡青元 组员3:庄卉 组员4:家灿 组员5:凯琳 组员6:丹丹 组员7:家伟 组员8:政演 组员9:黄鸿杰 组员10:刘一好 组员11:何宇恒 展示组内 ...