开发者社区> 问答> 正文

如何打包linux环境下的软件到windows中运行?

比如一直用的 prepros 软件做到了:

打包一个 ruby 2.0.0 以及一些gems sass-3.4.6 slim-2.1.0 chunky_png-1.3.3 等
并且运行良好
当然 还有一些node的库,安装的时候提示需要 node-gpy 比如:grunt-image,请问如何提取他所需要的环境并打包到windows下?

展开
收起
a123456678 2016-06-20 16:20:01 2610 0
1 条回答
写回答
取消 提交回答
  • 首先的说明,非原生的程序,也就是脚本或者Java,.NET之类的都可以直接跨平台,前提是,有对应平台的运行时或者虚拟机,或者是Host,例如nodejs之类,JavaScript一般是运行在浏览器.而nodejs也就是一个JavaScript主机,类似与Microsoft的WSCript。
    所以只要有运行时什么的,打包很容易的。
    就从最简单的Shell脚本来说,在Windows上有Cygwin MSYS MSYS2移植了Bash,那么shell脚本就能够在Windows上运行,同样的在Linux上,如果有cmd以及对应命令的实现,那么Batch文件就能够在Linux中执行,但是,几乎没有多少人会将批处理移植到Linux,批处理本身来说,简单,还是简单。例如PowerShell,在Windows上非常强大,有些开发者期待能够在Linux Mac上运行,所以出现了一个Pash的开源项目,基于Mono框架。项目地址:http://pash.sourceforge.net/ Github:https://github.com/Pash-Project/Pash ,Shell脚本本质上的执行是主机解析然后执行的,这种的移植只要有解释器就行,也就是'host'。

    类似于Java,.NET语言,这种语言是编译型,但是生成的代码是一种虚拟机代码,JVM虚拟机,.NET虚拟机,执行的时候,虚拟机解释或者JIT,目前基本以JIT为主,这种移植的原理就得实现一个虚拟机,运行时,JIT能够把代码编译成对应的机器码。目前.NET Java都能实现跨平台。

    第三种,也就是wine之类的,这个最为复杂,例如Windows 目录下的system32目录下以来的dlls,wine都得实现,wine还得让这些dlls的后端能够调用Linux的API,借口等等,对于一个PE程序,wine还得实现PE程序(.exe)的加载,环境的初始化,还得虚拟出一个Windows NT的环境,wine目前已经能有不错的效果了。对于Windows,也有人基于Cygwin实现一个能够运行linux程序的host,目前没有最新消息。

    虚拟机不在本文讨论中。
    未完待续。

    2019-07-17 19:44:20
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
从Linux系统内核层面来解决实际问题的实战经验 立即下载
Linux系统通过fail2ban对暴力破解进行防护 立即下载
ECS运维指南之Windows系统诊断 立即下载